mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Problema con Microsoft Visual C++ 5.0 : Colore delle Dialog Window e etichette sui bottoni

Salve, 
	Sono uno sviluppatore C++ alle prime armi, ed ho cercato soluzione ai
miei problemi sulla MSDN e nell Help del MSVC++ ma non ho trovato
(quasi) nulla.
	Devo realizzare un applicazione che abbia almeno l'aspetto della barra
di Office. Per far questo intendo fare una dialog con una sfilza di
piccoli bottoni, una bitmap contenente il nome dell'applicazione e con
lo sfondo blu. Da qui i problemi.
	1) SetDialogBkColor() cambia il colore di sfondo di TUTTE le dialog
dell' applicazione. Non c'e' modo che non sia estremamante complicato di
cambiare il colore dello sfondo di un solo dialog ?
	2) Come faccio a far comparire la funzionalità del bottone quando ci
passo sopra col mouse ? Io ho pensato di far comparire una finestrella
minuscola con scritto solo la funzione del bottone quando il mouse entra
nel rettangolo del bottone, ma mi sembra un modo poco efficace. Non
esiste un modo per farlo automaticamente con una chiamata a qualche
metodo particolare di MVC++ ??
Grazie mille per l'attenzione,
	Bossi Giovanni.

metodo particolare di MVC++ ??
se la finestra e' una classe derivata da CDialogBar la gestione dei
tooltips e' automatica.
Gianpaolo Bottin
- Live Long and Prosper -

Newsgroup: it.comp.lang.c++
Titolo: overload operatore[]

Salve
volevo sapere se esisteva un modo per "emulare" il comportamente degli array
del php in c++
ovvero avendo una classe che contiene una lista e che fa l'overload
dell'operatore
[]
come posso fare  ?
[code]
string& operator[](string namef="") const {
}
[/code]
una cosa del genere non compila potendo avere gli argomento di dafault
sarebbe stato il massimo ...


Non conosco il PHP, ma fammi capire.
Vorresti poter scrivere del codice come il seguente?
	string s1, s2;
	TuaClasse a;
	a[s1] = s2;
	a[] = s2;
	s1 = a[];
	s1 = a[s2];
In tal caso,non puoi in C++. Infatti gli operatori definiti dall'utente 
devono avere lo stesso numero di parametri degli operatori standard.
In un'espressione non si puo' scrivere "a[]", perche' non ha il 
parametro richiesto.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila
Newsgroup: it.comp.lang.c++
Titolo: C e C++

Ciao a tutti.
C'e' una cosa che non sono mai riuscito a capire: ma che differenza c'e'
esattamente tra il C e il C++? Cos'e' che li rende differenti?
Altra domanda. Vorrei utilizzare il Visual C++ 5.0 e/o il Borland C++ 5.02.
Esiste un buon testo del tipo "Il VC++ 5.0 inizia qui", o "Il Borland C++
5.0 inizia qui"  o qualcosa del genere per uno che non ha mai utilizzato ne'
VC++ 5.0 ne' BC++ 5.02, vorrebbe farlo, ma non sa assolutamente da che parte
incominciare? (indipendentemente dalla lingua, anche se preferibilmente in
italiano, o almeno che non sia inglese troppo tecnico.)
Grazie 100000 a che mi da' qualche risposta in aiuto.
Saluti
Michele
mc3...@mclink.it


Essenzialmente si puo` dire che il C++ e` un sovra -insieme del C, cioe` e` un
C + "(tanto) altro". In particolare rispetto al C il C++ e` fortemente tipizzato, offre
la possibilita` di usare diversi paradigmi di programmazione che il C non possiede
(OOP, programmazione generica), piu` un tot di altre cose mirate alla soluzione di
problemi piu` o meno specifici...
Questo a livello di puro linguaggio, perche` poi nella pratica quotidiana se vuoi 
utilizzare veramente a pieno il C++ bisogna adottare metodologie radicalmente diverse
da quelle del C
Paolo

Esiste un buon testo del tipo "Il VC++ 5.0 inizia qui", o "Il Borland C++
Ce ne sono, si`, ma secondo me e` meglio prima imparare
il linguaggio C++, e solo dopo occuparsi delle caratteristiche
specifiche dell'uno piuttosto che dell'altro ambiente.  Purtroppo
non ritengo pienamente soddisfacente, dal punto di vista
didattico, nessuno dei testi introduttivi al linguaggio C++ che
sono disponibili in italiano; bisognerebbe protestare con la
Addison-Wesley Italia, che tiene ancora in giro versioni
antediluviane delle traduzioni italiane dei due testi migliori,
il "C++ Primer" di Lippman (e Lajoie, nella terza edizione)
e "Il Linguaggio di programmazione C++" di Stroustrup --
di entrambe e` tradotta la 2a edizione, vecchia di molti anni,
mentre la 3a edizione di ciascuno, vecchia di un annetto
o poco piu` (e quindi ragionevolmente aderente all'attuale
Standard del C++), esiste solo in inglese (Addison-Wesley).
Alex

Esiste un buon testo del tipo "Il VC++ 5.0 inizia qui", o "Il Borland C++

Newsgroup: it.comp.lang.c++
Titolo: Copiare windows 9x

Alcuni amici mi richiedono un comando tipo XCOPY per DOS ma che veda
correttamente i
nomi di file lunghi.
Il problema che affligge molti è quello di fare una copia brutale di Windows
9x partendo da un
dischetto DOS per poi pasticciarci su e rimettere le cose al loro posto
senza doverci passare delle ore.
Forse esiste già , se è così , per favore , ditemi dove lo posso procurare
Altrimenti , se potete fornirmi le indicazioni per leggere i nomi lunghi in
un ambientetipo Borland c++ 3.1 per DOS
Per contro mi impegno a rendere freeware tale utility.
Attenzione attenzione il problema è anche quello della FAT 32!
Grazie.
Fabio

Già ma io non ho detto di utilizzare MS-DOS 6.22 ma andrebbe bene anche un
sistema operativo a 32 bit
il DOS 7 del resto funziona , (o quasi) no?
Un'altra soluzione sarebbe quella di avere un CD partenza con
un'installazione minima di windows 98 che però
funzionasse in modo indipendente dalla lettera assegnata al CD (mah forse mi
stà venendo un'idea ....)
in modo tale da avviare un windows minimo utilizzandolo solo per copiare una
copia dell'installazione dal Cd al HD
Insomma se devo fare delle prove come faccio?
Voi come fate?
Reinstallo tutto tutte le volte?
Puff puff ...
Mannaggia?!
HELP!
CIAO-----
F.B.I.
--------------------

m

Newsgroup: it.comp.lang.c++
Titolo: Rilevazione hardware

Ciao a tutti,
	avrei bisogno di un piccolo aiuto per rilevare correttamente le
impostazioni hardware di pc con installato un sistema NT (2k o XP). Sono
riuscito a rilevare quasi tutte le periferiche, ma mi manca la scheda
audio e la scheda di rete. Qualcuno sa' indicarmi qualche libreria di
sistema?
Ciao e grazie

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni, come ad esempio
C++/CLI. Per questo non e' il posto piu' adatto per porre domande
specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:	it.comp.os.linux.development
Per C++Builder:	i gruppi borland.public.cppbuilder.*, disponibili sul
		server 
newsgroups.borland.com
 (prevalentemente in
		inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Domanda semplice semplice

Quelle che seguono sono due classi, la classe Ball è figlia dell'altra, 
quindi dovrebbe vedere
i dati protected della classe genitore, ma non li vede.In cosa ho sbagliato?
Ecco il listato:
class Collision_object
{
  public:
   Collision_object() : top(0) ,bottom(0), left(0), 
right(0),leftraquet(0),rightraquet(0){}
   virtual void detectcollision()=0;
   void readkeyboard();
   void plotpixel(unsigned int _x,unsigned int 
_y){putpixel(screen,_x,_y,100);}
  protected:
   unsigned int x,y;
   char top,bottom,left,right;// flag di collisione palla
   char leftraquet,rightraquet;//flag di collisione racchetta
};
class Ball : public Collision_object
{
 public:
  Ball(): x(SCREEN_W/2),y(SCREEN_H/2),width(2){}
  void drawball();
  void detectcollision();
  void refreshball();
 private :
  char width;
} ;
---------------------------------------------------
Fiat Tipo 1.1 dgt Proud Driver
human abs&asr dotated
Il mio blog   
http://iltipoconlatipo.blogspot.com/
 

Scusate se mi replico da solo, ma facendo cosě funziona
Ball(){x=SCREEN_W/2;y=SCREEN_H/2;width=2}
cosě invece no
Ball(): x(SCREEN_W/2),y(SCREEN_H/2),width(2){}
che errore ho commesso,non capisco...


 che errore ho commesso,non capisco...
Nella lista di inizializzazione puoi inizializzare solo i membri
diretti della classe di cui stai definendo il costruttore, non i membri
delle classi base. Per ottenere cio' che vuoi devi definire un
costruttore apposito nella classe base che permetta tale
inizializzazione, ad es.:
Base::Base(int xx, int yy, int w) : x(xx), y(yy), width(w) {}
Ball::Ball() : Base(SCREEN_W/2,SCREEN_H/2,2) {}
Ciao,
Nicola

 wrote in message 
news:1158655490.5...@e3g2000cwe.googlegroups.com...
CUT
Grazie tante, era la risposta più logica.


Newsgroup: it.comp.lang.c++
Titolo: Dimensioni stack con Watcom C++ 10.6

Salve,
ho assolutamente bisogno di aiuto! Vi spiego il mio problema:
devo costruire una routine in Dos che risponda alle interruzioni mandate da
una scheda sul bus ISA, il mio proble e' dovuto al fatto che se questa
routine contiene chiamate a funzioni (ne basta una) il programma si pianta
durante l'esecuzione generando un errore di Stack Overflow.
Qualcuno di voi sa quindi come si puo' aumentare la dimensione dello stack,
o comunque risolvere il problema in qualsiasi altro modo?
Confido in voi...
A presto
Francesco Baralli
--
Automatic posted from 
virtual.zia.ms.it
 [195.103.158.42]
via Mailgate Server - 
http://www.mailgate.org

o comunque risolvere il problema in qualsiasi altro modo?
non e' per caso che stai compilando con l'opzione che attiva il
controllo di stack overflow ? Al 99% non si tratta di un problema di
dimensioni di stack ma solo del fatto che durante un interrupt lo
stack non si trova nel posto a lui adibito dallo startup del C per cui
la funzione di controllo va un po' in tilt. Comunque fai attenzione
anche alle dimensioni, a meno che tu non prenda opportune precauzioni
non puoi fare affidamento sullo spazio che hai a disposizione,
potrebbe trattarsi anche solo di poche decine di bytes.
Gianpaolo Bottin
- Live Long and Prosper -
Newsgroup: it.comp.lang.c++
Titolo: Problemi BDE

Sto creando programmini che utilizzano tabelle Paradox.
Se li lancio dal computer dove li ho compilati nessun problema.
Se li lancio da un altro computer (dove non c'è CBuilder) mi da il
messaggio: errore di caricamento Borland Database Engine!!!
Devo aggiungere righe al sorgente?
Devo aggiungere file al progetto?
A chi volesse rispondermi, anticipatamente grazie.


Il tuo messaggio e' off-topic in questo gruppo, ove si discute
esclusivamente del linguaggio C++.
Il problema in ogni caso dipende dal fatto che devi installare il bde (in
particolare le interfacce isapi) sulla macchina ove intendi utilizzare
l'applicazione. Prova a chiedere a gruppi piu' consoni, tipo
borland.public.....
Ciao,
Gianfranco

...


Newsgroup: it.comp.lang.c++
Titolo: Non riesco ad assegnare una stringa a un char*

Scusate, ho un problemino, devo fare tanti record con delle stringhe di
lunghezza fissa, quindi uso stringhe di questo tipo:
char nome[30];
ma poi se faccio
nome="Michele";
mi dice che non è un Lvalue valido (uso C++Builder3).
Eppure "nome" senza niente dovrebbe essere un puntatore a char, no? Come
posso fare? (Non posso usare un puntatore altrimenti le stringhe non
starebbero dentro i record una volta che rileggo questi da un file).
Grazie a chi mi può aiutare!
Ciao
Michele

 ha scritto nel messaggio ...


 wrote in message
fEEB5.52254$3R6.1...@news.infostrada.it...



Ciao.

Grazie di cuore a tutti!
Newsgroup: it.comp.lang.c++
Titolo: explicit instantiation

sto studiando il capitolo 8 del libro di Stephen Prata su fubction
Templates, in particolare la differenza fra Instantiations e
Specializations.
Da un punto di vista formale i casi sono chiari, ma da un punto di vista
sostanziale, che differenza c'è fra Specialization e Explicit Instantiation?
inoltre non capisco perchè fare una explicit instantiation quando questa o
non serve o (se serve)avverrebbe comunque implicitamente. Qualcuno può darmi
una spiegazione di massima?

 sostanziale, che differenza c'č fra Specialization e Explicit
Instantiation?
Questa domanda č idiota, scusate.
Volevo dire : mi sfugge il senso di una "instantiation" esplicita. A cosa
serve se non č una funzione specializzata?

 serve se non è una funzione specializzata?
Ad esempio ad assicurarsi che la specializzazione venga inclusa in una
libreria. Inoltre se il tuo template viene specializzato in un numero
noto e limitato di casi l'istanziazione esplicita di tutti i casi ti
permette di non includere la definizione del template nel file .h .
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: CPopertySheet e SDI

Ho creato una applicazione SDI con classe base CDialog per il form; ora ho
bisogno di inserire delle tab (le famose cartelle...), pero' voglio
utilizzare CPropertySheet e poi aggiungere le pages. Il mio problema e' come
fare per legare la CPropertySheet al form, cioe' evitare che crei una nuovo
dialog.
Ciao.

...

Ci sono alcuni punti non molto chiari:
"classe base CDialog per il form"? in un SDI?
"legare la CPropertySheet al form"?
Non e' chiaro cosa chiedi. Hai bisogno di una classe tipo CPropertySheet, che pero'
gestisca viste invece di CPropertyPage? Un vista tipo CPropertySheet che gestisca
pagine di tipo CPropertyPage? O che altro?
Oreste Notelli
Newsgroup: it.comp.lang.c++
Titolo: help me!

Salve a tutti,
chi mi darebbe una mano nella soluzione di queste due domande ?
grazie.
8. Write a void function Read_Date which reads a date in the form mm/dd/yy
and returns the month,day, and
    year via call-by refrence parameters. Use call by reference, not integer
pointer arguments.
9. Given the definition for class Date below, add to the definition a
constructor which takes as parameters           values for the month, day,
and year.
                    class Date {
                            int Month, Day, Year;
                            . . .
                    };

 ha scritto nel messaggio
news:T0gq8.107407$1S3.3...@twister1.libero.it...

Tradurle non t'avrebbe di certo nuociuto! Può sorgere il sospetto che tu
habbia postato le domande in inglese perché non saresti riuscito a
tradurle...
1)
#include <ctime>
void Read_Date(int &mese, int &giorno, int &anno) //formato discutibile per
presentare una data...
{
    const long h=time(NULL);
    tm *ptm=gmtime(&h);
    mese    =    ptm->tm_mon+1;
    giorno   =    ptm->tm_mday;
    anno     =    ptm->tm_year-100; //N° anni trascorsi dal 1900; dal 2000
                                                   //in poi bisogna
sottrarre 100 per avere
                                                   //solo le ultime due
cifre dell'anno
}
2)
class Date{
    int Month;
    int Day;
    int Year;
public:
    Date(int M, int D, int Y):Month(M),Day(D),Year(Y) {}
};
Saluti

 tradurle...
<italiano.NET>
  habbia
</italiano.NET>


Date la definizione per la classe Date sottoscritta, aggiungendo alla
definizione un costruttore il quale prende come parametri il valore di mese
giorno ed anno.

Poi il voto a chi va?
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: inizializzazione o assegnazione nei costruttori di oggetti membro

Salve,
ho qualche dubbio su cosa sia meglio applicare quando si deve
inizializzare un oggetto
che è membro di un latro oggetto; ovvero la sintassi con
inizializzazione tipo:
A::A() : myB(some) {} // posto che myB sia B myB
oppure
A::A() { myB = B(some) }
e lo stesso vale per i puntatori.......
Cosa ne pensate?


E' un dubbio che non ti dovrebbe nemmeno venire. I membri dati si
inizializzano nella lista di inizializzazione. Per non farlo bisogna
avere motivi validi.
Ciao,
Nicola


In realtà il dubbio è lecito ed infatti lo stesso è "sciolto" qui:
http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6
tuttavia se si omettono le motivazioni relative alle prestazioni in
effetti
tranne che per i riferimenti e i membri costanti nulla vieta di
inizializzare
gli altri dati membro (tpi primitivi, oggetti puntatore ecc.) nel
corpo del costruttore come assegnazione.
Bye

 corpo del costruttore come assegnazione.
Salvo il buon senso. Se esiste un modo *normale* di fare le cose e'
bene seguirlo a meno di non avere un motivo concreto e valido di non
farlo. Questo evita a te di perder tempo dietro a dubbi inutili e
soprattutto lo evita a chi legge il tuo codice. Infatti vedendo i
membri dati inizializzati all'interno del corpo del costruttore un
programmatore C++ competente e' portato chiedersi il perche' di questa
anomalia ed a cercare di scoprire se il motivo e' qualcosa che e' bene
sapere.
Avere dubbi e' importantissimo, ma bisogna imparare a riconoscere
immediatamente le questioni irrilevanti da quelle fondamentali. Ne
trarranno vantaggio sia la produttivita' che la qualita' del codice.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Chiamata di costruttori.

Ho questo problema:
struct firstStruct {
 float varFloat;
 float varFloat2;
 //...
};
struct secondStruct
{
 int varInt;
 int varInt2;
 //...
};
class abc
{
   abc( firstStruct *fs)
     {
       //Do something..
     }
  abc( secondStruct *ss)
    {
      firstStruct fs;
      fs.varFloat = ss->varInt;
      fs.varFloat2 = ss->varInt2;
     abc ( &fs ); // <--------- The problem is here.
    }
};
Come posso nel secondo costruttore richiamare anche il primo costruttore
senza che questa chiamata mi generi un nuovo oggetto abc?
Io ho fatto cosě:
class abc
{
   abc( firstStruct *fs)
     {
       //Do something..
     }
  abc( secondStruct *ss)
    {
      firstStruct fs;
      fs.varFloat = ss->varInt;
      fs.varFloat2 = ss->varInt2;
     this->abc ( &fs ); // Qui il compilatore Microsoft mi genera un errore
mentre il compilatore Intel non dice nulla e funziona come dovrebbe, solo
che devo compilare anche con il microsoft
    }
};
Come posso  risolvere questo prob senza scrivere un terza funzione (ad es.
Initialize()) che venga chiamata da entrambi i costruttori? esiste un latro
modo?
Grazie,
      Taniele.

 };
Per M$ va bene fare cosi':
        this->abc::abc(&fs);
solo per lei.
Comunque non ha molto senzo fare quello che stai facendo.....
PS. Il modo + pulito e' fare un metodo privato da chiamare
all'interno dei due costruttori.
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

       Taniele.
HTH
Fabio
-- 
Posted from 
flopiano.mm.eutelsat.org
 [194.214.173.28] 


 all'interno dei due costruttori.
Oppure si puo' definire una superclasse il cui costruttore comprende il
codice  comune agli altri costruttori. Di solito pero' questa tecnica si
utilizza quando ci sono molti membri dati che vengono inizializzati allo
stesso modo da piu' costruttori.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: differenze c/c++

Salve.
Vorrei sapere se qualcuno gentilmente mi elenca mooolto sommariamente le
differenze fra C e C++;
Inoltre, i programmi realizzati in C o C++ sono molto piů veloci di
quelli realizzati in Pascal? 
Ringrazio chiunque risponda.
-- 
mailto:
de...@iol.it
http://users.iol.it/della
--------------------------
HARDWARE PAGE
http://www.geocities.com/SiliconValley/Pines/4483
 
--- Last update 21/5/97 ---
--------------------------
Gruppo Q-ZAR: MEGANOIDI

ecc ...
Permettimi di dissentire su queste affermazioni, ma usare il C++ (di cui io 
non sono un utilizzatore, preferisco il vecchio C) come un super set del C è 
mortificante per il linguaggio stesso e non ti permette di sfruttare il 
linguaggio con tutte le sue potenzialità... il dire "super set" implica che tu 
usi il linguaggio C ma nel caso fai uso delle potenzialità degli oggetti, il 
caso prevede il contrario cioè l'uso del paradigma ad oggetti SEMPRE e nel 
caso sfrutto le potenzialità del C.
Nel punto 4 dici estensioni, ma ormai non sono più estensioni in quanto c'è un 
comitato ANSI per la standardizzazione del C++ e non del "C con estensioni ad 
oggetti" e poi tutte le caratteristiche che scrivi sono proprie del C++, non 
del C, che ormai sono diventati due linguaggi distinti (anche se hanno in 
comune il linguaggio di base, o perlomeno la sintassi); non confondere il 
linguaggio con la sintassi, il linguaggio, oltre che dalla sintassi, è 
composto anche dal paradigma di programmazione, dalla struttura e dalle 
possibilità che esso offre (gli oggetti, in questo caso).
Sono mie opinioni, se vuoi possiamo anche discuterne in privato.
                                                Luca Basso Ricci.
-------------------------------------------------------------
-------------------------------------------  Luca Basso Ricci
----------------------- mailto:
bass...@kame.usr.dsi.unimi.it
-------------------------------------------------------------

Stavo dimenticando, non confondere la definizione di una classe, con l' istanza
di un oggetto di quella classe.
--
---
________________________________________________________
                              "Ho fatto un sogno,                              
 
     ho veduto l'umanita' volgere il suo sguardo verso l' universo,      
              perche' nonostante tutto, e' li il suo futuro"                   
 
                                     Roberto B.                                
 
________________________________________________________

Newsgroup: it.comp.lang.c++
Titolo: Problema form Borland C++ Builder 1.0

Salve a tutti
io ho iniziato da poco a programmare con il Borland C++ Builder e ora ho un
problema: nel mio progetto ho inserito piu form. In quella principale ci
sono anche delle variabili globali e delle funzioni che vorrei poter
utilizzare anche dalle altre form. Come devo fare per richiamarle?
Grazie dell'aiuto
Fabio

...

Newsgroup: it.comp.lang.c++
Titolo: sottoclassi

Supponete di avere
template <class T>
class A
{
   public:
     class B
     {
       T f();
     };
     class C
     {
       T h;
     };
     ...
};
Se la definizione della classe diventa troppo lunga e caotica, e non 
volete portare fuori le sottoclassi pubbliche per non duplicare <class 
T>, come fate?
Purtroppo (vabbe', ci ho pensato solo 5 minuti) ho trovato soltanto 
questa soluzione:
template <class T>
class A
{
   public:
     #include "B.h"
     #include "C.h"
     ...
};
Kiuhnm

 
Questa soluzione mi sembra accettabile.
Se inoltre, come sembra, le definizioni di B e C sono strettamente 
legate a quella di A e non devono poter essere utilizzate esternamente, 
si potrebbe anche pensare di legare B.h e C.h ad A.h tramite include 
guards incrociate.
Esempio:
<file A.h>
#ifndef A_H_blahblahblah
#define A_H_blahblahblah
<definizione di class A>
#endif
<file B.h>
#ifdef A_H_blahblahblah // questo deve corrispondere
			// all'include guard di A.h
#ifndef B_H_blahblahblah
#define B_H_blahblahblah
<definizione di class B>
#endif
#endif
Ovviamente questo sistema e' scavalcabile, ma bisogna farlo 
intenzionalmente.
-- 
Roal Zanazzi

 intenzionalmente.
Ho già fatto qualcosa di simile:
=== tile.h ===
...
class Tile
{
#define	_IN_CLASS_TILE_
...
#undef	_IN_CLASS_TILE_
};
...
=== worker.h ===
// IMPORTANTE:
//	Questo file viene incluso all'interno della classe Tile:
//		template <class SEGMENT>
//		class Tile
//		{
//			...
//			#include "worker_int.h"
//			...
//		}
//
#ifndef	_IN_CLASS_TILE_
	Errore : questo file può solo essere incluso in tile.h!!!
#endif
...
======
Kiuhnm

     Errore : questo file può solo essere incluso in tile.h!!!
Errore : questo file può solo essere incluso in Tile!!!
Kiuhnm

 
Potresti usare la direttiva #error.
#ifndef _IN_CLASS_TILE_
     #error Questo file puo' solo essere incluso in tile!!!
#endif
-- 
Roal Zanazzi

 Potresti usare la direttiva #error.
Sě, non sapevo che č standard.
Kiuhnm
Newsgroup: it.comp.lang.c++
Titolo: Referenze e Ritorno

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Salve a tutti, ho una curiosita' insoddisfatta da proporvi:
Sto usando gnu gcc 3.3.4; dopo aver scritto:
~  vector<Elem> vettore= new vector<Elem>;
~  ....
~  Elem elemento_di_prova;
~  vettore->push_back(elemento_di_prova);
Ho una funzione che ritorna un elemento del un vettore:
~  Elem return_noRef(int i) { return vettore->at(i);}
Ed un'altra funzione che prende in ingresso una const reference di Elem:
~  void take_constRef(const Elem &rhs)
Chiedendo:
~  take_constRef(return_noRef(1));
ottengo Segmentation fault...
se invece uso:
~  Elem &return_ref(int i) { return vettore->at(i);}
~  take_constRef(return_ref(i));
funziona perfettamente...
Qualcuno mi sa spiegare perche'?
Grazie mille in anticipo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iD8DBQFBfhm52u50JcQX+7ARApJoAJ9o2+fQwawdfot+wvMe38NJQd1ubACeOsH7
kW+oewr168yh2mOETnzmP1U=
=M6W2
-----END PGP SIGNATURE-----

 funziona perfettamente...
è una const ref ad un ref di un elemento ancora "vivo" nel container
-- 
sbi

 ref all'iperspazio
Uh? Non c'è nulla che non vada in quel frammento di codice. La funzione
membro 'at' restituisce un reference (non const, per la precisione, visto
che '*vettore' non è const) all'elemento 'i'. Questo reference è usato per
costruire l'oggetto 'Elem' temporaneo. Tutto normale.
Se il programma ha un comportamento inaspettato, il problema potrebbe
risedere ovunque. Un'ipotesi possibile è che risieda nel costruttore copia
di 'Elem'.
sakurai, per favore, potresti produrre un esempio minimo, completo e
compilabile che illustri il problema in questione?
Max

 costruire l'oggetto 'Elem' temporaneo. Tutto normale.
... ehrm
l'ho letto come const Elem& take_constRef(const Elem& rhs)
-- 
sbi

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

uhm... guarda, la mia era solo una curiosita'... volevo sapere se avevo
sbagliato qualcosa. Ma la sintassi e' corretta; se trovo il bandolo
della matassa mi rifaccio sentire.
Ciao e grazie ancora!
sakurai.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iD8DBQFBfqfE2u50JcQX+7ARAnBuAJ9Gb9b411/Y5p0eoInVkhnOeqiT8gCdHL2F
4uUa+FKUVUdm2/ZRIKuEo7A=
=XssP
-----END PGP SIGNATURE-----
Newsgroup: it.comp.lang.c++
Titolo: costruttore per copia

Il mio progetto prevede una classe astratta, dalla quale ereditano altre
classi.
Una di queste possiede come attributo un puntatore alla classe astratta
stessa:
class A{
	//tutti metodi virtual =0;
};
class B : public A{
	//definizione dei metodi virtual ereditati;
	A* ptra	;
};
class C :public A{
	//altri metodi + quelli virtual;
};
class D :public A{
	//altri metodi + quelli virtual;
};
Poichè la classe B contiene un puntatore, credo sia il caso di definire
per essa 
esplicitamente costruttore per copia, operarore assegnamento,
distruttore...
Quello che mi chiedo è, poichè l'attributo ptra, grazie al polimorfismo
può puntare sia a 
oggetti di tipo c che di tipo d, quando nel costruttore per copia mi
trovo:
B::B(&B)
mi risulta difficile sapere a priori di che tipo è l'attributo che devo
duplicare, e quindi cosa scrivo, ptra=new ????? di cosa, che costruttore
chiamo?
 
	Grazie fin d'ora, Veruska


fai un funzione virtuale
A* creaCopia (const A* og);
e poi l'implementi nelle classi:
class C
{
A* creaCopia (const A* og)
{ return new C(* static_cast<const C*> (og)); }
};
e la chiami polimorficamente nel costruttore di copia di B (fai attenzione
che anche B č derivato da A e se chiami B::creaCopia dal copy-constructor di
B non ne esci piů).

chiamo?
Un paio di settimane fa, in questo gruppo, c'era un thread
"Implementazione del metodo Clone()".  Ti consiglio di dargli
un'occhiata - anche perche' Alex Martelli ha proposto una bella
soluzione al problema!
  Paolo G.

chiamo?
Ogni classe dovra` avere un metodo virtuale Clona() cosi` definito:
class A {
  protected:
     virtual A* Clone() {
         return new A(*this);
     }
};
a questo punto quando devi copiare l'oggetto puntato
basta chiamare il metodo virtuale:
class B: public A {
   A* Ptr;
   public:
      B(const B& b) :Ptr(b->Clone()) {}
};
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Stringa modificata solo nella aspetto e non nella dimensione!!!

Salve a tutti, ho il seguente problema:
Ho questo sorgente:
#include <iostream>
#include <string>
string stringa = "ABCDE";
int main () {
        stringa[2] = stringa.empty();
        std::cout << stringa << " = " << stringa.size() << std::endl;
        return 0;
}
Se eseguo questo programma mi da il seguente output:
ABDE = 5    perchè?
Praticamente elimina il carattere ma non aggiorna la dimensione della
stringa...
evidentemente il problema è in stringa[2] = stringa.empty(); 
Per caso non libera la memoria occupata dal carattere?
Come faccio ad aggiornare anche la dimensione?
Ho provato anche stringa[2] = ' '; ma mi da AB DE come output senza
risolvere il problema, anzi aggravandolo!
Spero mi possiate aiutare
Grazie
Luigi
byte...@hotmail.com
-- 
Posted from 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ABDE = 5    perchč?
Perche' e' la risposta corretta (e tu non hai le idee chiare).
empty() e' un metodo di std::string che restituisce un bool: true se
la string e' vuota, false se non lo e'.  Il false restituito viene
promosso ad intero (e diventa 0 a norma di standard); dopo di che in
stringa[2] viene scritto il carattere '\0' il cui significato dipende
dal character set usato (ASCII, EBCDIC, ...).  Evidentemente nel tuo
character set si tratta di qualcosa non stampabile.
Cosa vuoi fare esattemente?
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

No, non l'ho messo using namespace std; e compila...
Cmq, io volevo fare in modo da eliminare il carattere dalla stringa, in
modo da scrivere una funzione che elimini una sottostringa da una
stringa
Grazie
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 


 stringa
std::string ha gia' un metodo "erase" che fa esattamente questo.


 std::string ha gia' un metodo "erase" che fa esattamente questo.
Funziona cosi: ?
s[2].erase()  cancella il carattere
s.erase() cancella la stringa
Grazie
Luigi

 writes:

No, non funziona cosi'.  Qualunque testo elementare di C++ ti puo'
spiegare come richiamare il metodo.


 spiegare come richiamare il metodo.
io ho provato s = s.erase() e la cancella, perň non riesco ad eliminare un 
o piů caratteri
Grazie
Luigi

 s.erase() cancella la stringa
Funziona cosě:
 
http://www.dinkumware.com/htm_cpl/string2.html#basic_string::erase

  
http://www.dinkumware.com/htm_cpl/string2.html#basic_string::erase
 
Grazie per il sito, perň non ho capito come funziona la copy
Ciao
Luigi
Newsgroup: it.comp.lang.c++
Titolo: Array dinamico con new: e perchè?

Appresa la nozione di new e delete, ho provato a realizzare un array
dinamico. Ecco il codice:
-----------------------------
int main()
{
int* ptr = new int;
cout <<"Quanti numeri? -->";
cin >> *ptr;
int v[*ptr];
for (int i=0;i<*ptr;i++) {
  cout <<"Numero "<<i<<" --> "; cin >> v[i];
  }
  cout <<"Array creato --->  {";
for (int i=0;i<*ptr;i++) {
  cout <<v[i]<<", ";
  }
  cout <<"}";
---------------------- Tutto sembra molto chiaro, e il programma funziona.
Assegno in pratica la puntatore ptr l'indirizzo di un intero NEW, e poi
lavoro deferenziandolo. Ok. Dopo però mi è venuto un dubbio sull'effettiva
utilità del NEW, e ho provato così:
------------------
int main()
{
int n;
int* ptr = &n;
cout <<"Quanti numeri? -->";
cin >> *ptr;
int v[*ptr];
for (int i=0;i<*ptr;i++) {
  cout <<"Numero "<<i<<" --> "; cin >> v[i];
  }
  cout <<"Array creato --->  {";
for (int i=0;i<*ptr;i++) {
  cout <<v[i]<<", ";
  }
  cout <<"}";
---------- Anche stavolta sembra funzionare: perchè? Il New allora a cosa
serve se questo esercizio sembra riuscirmi anche usando un intero n e
facendolo puntare da ptr?
Lucaz

int* ptr = &n;
Perché vuoi per forza utilizzare i puntatori?
-- 
Marco Barisione (ICQ 84277092)

Prova a usare 'std::vector<int>'.  o se no ai problemi a quando deve 
chiamare delete.
G


chiamare delete.
???


Con vector<int>, puoi evitare la chimata a delete.


 Con vector<int>, puoi evitare la chimata a delete.
Se è per quello anche alla new...
Potresti, per favore, quotare correttamente?
--
Gerolamo

Per sicuro ... quando imparo scrivere in italiano :)
Sto facendo il migliore che posso.


int v[*ptr];
no, non é questo il sistema giusto. sostanzialmente il puntatore 'ptr'
non serve a nulla,ed in tal modo per cambiare le dimensioni all'array
dovresti usare 'realloc', funzione utile in C ma praticamente inutile
in C++, dove esistono soluzioni molto piů rapide e piů sicure.
Te ne suggerisco una che fa uso del contained 'std::vector',
esplicitamente pensato per realizzare array dinamici di qualsiasi
tipo.
#include<iostream>
#include<string>
int ct;
std::cout<<"Quanti numeri? -->";
std::cin>>ct;
std::vector<int> v(ct);
for(unsigned int i=0;i<ct.size();i++)
    {
    std::cout<<"Numero "<<i<<" -> ";
    std::cin>>v[i];
    }
/*........*/
Il Ghenio
---------
// TODO: Place your ass here

for(unsigned int i=0;i<ct.size();i++)
ovviamente volevo scrivere
for(unsigned int i=0;i<v.size();i++)
bye,bye


 Sto facendo il migliore che posso.
Credo di non essermi spiegato bene.
Quando rispondi a un messaggio:
1- Taglia le parti del messaggio che non sono necessarie per
   comprendere la risposta.
2- Rispondi SOTTO alla parte riportata.
Se non ti è chiaro dai un occhio qui:
http://www.uwasa.fi/~ts/http/quote.html
--
Gerolamo
Newsgroup: it.comp.lang.c++
Titolo: Corso di c++

Salve a tutti, c'è qualcuno che mi sa indicare un buon corso di c++ anche
inglese? Grazie

...



Prova su 
http://welcome.to/C++Warriors
.
L'ho realizzato qualche tempo fa indirizzandolo a chi intende imparare un linguaggio
ex novo. Mancano ancora alcuni argomenti (eccezioni e RTTI) che spero di aggiungere
tra non molto.
Paolo

Newsgroup: it.comp.lang.c++
Titolo: problemi con la leda

ho un grosso problema.
Devo fare un esame che riguarda i grafi, li devo utilizzare in linux,
insieme alla libreria LEDA.  Uso suse 6.3
nel manuale della leda definisce un grafo g come:
graph G;
io ho fatto un file g++:
#include <LEDA/graph.h>
void main()
{
graph g;
}
ma nella compilazione (g++ grafo.cpp)
mi da i seguenti errori:
undefined reference to: leda_graph::leda_graph(void)
e quindi non mi crea l'out.
Vi prego aiutatemi.......

 Vi prego aiutatemi.......
Dichiara la libreria al linker, con le opzioni -L <path> -l <libreria> .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

Dichiara la libreria al linker, con le opzioni -L <path> -l <libreria> .
No post OT, please...
Luc.
Newsgroup: it.comp.lang.c++
Titolo: Dev-C++ 5.11 continua a inserire parti che non ci sono più

Buongiorno a tutti
 
Sto cercando di fare un semplice programmino per arrestare Windows dopo 
i minuti impostati. Uso Dev-C++ 5.11. Ho compilato questo:
 
+++++++++++++++++++++++++++
 
#include <iostream>
using namespace std;
  int tempo;
char buffer[30];
 
int main ()
{
  cout << "\nTra quanti minuti spegnere? " ;
  cin >> tempo;
  cout<< "Spegnimento tra "; cout<<tempo;
  if (tempo==1) cout<<" minuto";
  else cout<<" minuti";
  tempo*=60;
  sprintf(buffer, "shutdown -s -t %d", tempo);
  system(buffer);
  return 0;
}
 
+++++++++++++++++++++++++++
 
ma sembra funzionare solo raramente... (???...)
Allora ho provato a togliere la parte dell'inserimento del tempo:
 
+++++++++++++++++++++++++++
 
#include <iostream>
using namespace std;
char buf[30];
 
int main ()
{
  sprintf(buf, "shutdown -s -t %d", 10);
  system(buf);
  return 0;
}
 
+++++++++++++++++++++++++++
 
ma l'eseguibile, pur aggiornato nell'orario in cui è stato salvato, 
continua a chiedere "Tra quanti minuti spegìnere?"!
Perché???
 
Grazie
Gianluca
 
-- 
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 


ma hai ricompilato ?
 

Buongiorno, Doctor Who
 
Sì, ho fatto Esegui - Compila e ha prodotto un file exe con l'orario 
corrente. L'ho fatto più di una volta.
 
Adesso, avendo letto che Dev-C++ ha tanti difetti, ho appena scaricato 
Code::Blocks.


Compilato con Code::Blocks, quando provo a eseguirlo dice che non trova 
libstdc++-6.dll!
 
Ho cercato informazioni: dicono di aggiungere -static. Dopo averlo 
fatto, mi segnala l'assenza di un'altra: libgcc_s_sejh-1.dll.
 
Dev-C++ almeno ha funzionato subito! :)


Grazie a un video su Youtube, ho scoperto che bisogna spuntare i 3 
Static in Settings - Compiler - Compiler settings - Compiler flags! :) 
(Ma perché non lo fanno di default???...).


 
 
 
non lo so, comunque io uso Linux e GCC
 

Code:Blocks fa la stessa cosa! :(
 
Anche se cancello l'eseguibile prima di ricompilare e leggo l'orario 
corrente in "Ultima modifica", quando lo eseguo mi chiede di inserire i 
minuti... Eppure nel codice quella parte non c'è più!
 
Dove sbaglio?...


 
 
 
dovresti consultare qualcuno esperto di quei compilatori o IDE, io ho 
sempre usato GCC e non vado oltre...
 

A parte ciò, non arresta il sistema e continua a chiedere di inserire il 
tempo: lo inserisco e lo chiede di nuovo, all'infinito... Perché?


 
Ciao,
da ciò che racconti i problemi sembrano essere più di uno ma se 
cominciamo col primo che hai denunciato direi, per logica, che 
l'eseguibile che viene lanciato non è lo stesso del risultato 
dell'ultima compilazione. Fossi in te cercherei per il disco quanti exe 
ci sono con lo stesso nome oppure, una volta avviato, cercherei il 
processo in memoria con "gestione attività" (se sei su windows 
altrimenti con "ps" ed i giusti parametri su ..ux) e ne controllerei il 
percorso da cui è stato avviato. Questo per iniziare.
Newsgroup: it.comp.lang.c++
Titolo: do while

Sapete dirmi perchč non funziona questo codice?
#include <iostream>;
using namespace std;
int main (int, char* []) {
int i = 0;
do {
         i++;
        cout << i << endl;
        while (i < 10);
      }
return 0;
}
mi dice che do deve avere while... ma č li!
Grazie
--
Posted from [195.223.215.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie
di nulla
-- 
Wave++, member of EventOrizon software
http://members.xoom.it/wavexx

 
while dovrebbe stare fuori dalla graffa chiusa.

non è che me ne intenda molto ma mi pare che la sintassi di un ciclo do while sia:
do
{
istruzioni
} while (condizioni);
e non come hai fatto tu:
do
{
istruzioni
while (condizione)
};
in pratica tu hai fatto un ciclo while nel ciclo do while e non un ciclo do while.
credici
cre...@infinito.it
----------------------------------------------
Virgilio Mail - Il tuo indirizzo E-mail gratis
http://mail.virgilio.it
--
Posted from [212.48.4.47] 


}
"while (i < 10);" deve stare fuori dal ciclo di istruzioni che intendi
eseguire.
Il Ghenio
-----
Douce Sarah, p'tite aux yeux pleins de joie
Le sourire est avec toi
Tu seras capable
Le sourire aimable
D'oublier le mal, ma p'tite chérie
(Princess Sarah 1985)
 
http://www.lool.net/Sara/mainI.html
 
http://www.ne.jp/asahi/ramdas/sara/
-----

Newsgroup: it.comp.lang.c++
Titolo: menu in dos

dove posso trovare informazioni per la creazione di menu sotto Dos?

 dove posso trovare informazioni per la creazione di menu sotto Dos?
prova la dflat library di Al Steven

Newsgroup: it.comp.lang.c++
Titolo: Errori g++ in porting da VC a g++

Salve,
forse sono un po' OT, ma ho sviluppato una serie di server con Visual C
e sto tentando di farne il proting per linux.
Premesso che ho utilizzato solo librerie  ANSI, e non microsoft,
premesso anche che all' interno di ogni file ho provveduto a porre le
include <stdio.h> che  visual C considera in automatico...
quando arrivo a compilare g++ Proce.cpp ottengo:
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
scusatemi ma  che di che si tratta?
Grazie
Alessandro
fior...@tiscalinet.it

 wrote in message
news:39D06EE0...@mcculloch.ing.unifi.it...


scusatemi ma  che di che si tratta?
Non trova la funzione main( ) nel file Proce.cpp
Credo che tu stia usando male g++
se hai una serie di file *.cpp e vuoi ottenere un *unico* eseguibile devi dare
g++ -Wall -o file   file1.cpp file2.cpp file3.cpp file4.cpp ...
ed ottieni un eseguibile di nome "file" ( --> -o file <-- )
Newsgroup: it.comp.lang.c++
Titolo: Image Mosaic

Hi all,
Wonder if any of you could help me.
I want to design a c++ program that would accept an input of 1000 images
from a database, and create a mosaic image from these images (i.e. image
comprised of small tiny images) - we therefore have to find the average RGB
value of each of the 1000 images
I wish to implement it like this:
1.create a vector for each image to store the avg RGB value
2.create a left node for each of the 1000 image
3.calculate the distance between 2 images using Euclindean distance or
Riemersma's Formula. Then find the 2 closest images to form a parents node..
4.repeat 3 until one root node is formed...
all the images names are in a file called image.db
to run the compiled program (in linux):
./mosaic image.db image.ext x y
mosaic is name of the program
image.db is the database for the images
image.ext is the output image with the extension or ur choice (any pic
format)
x is the number of rows of the grid to fit over image.ext
y is the columns
Could anybody PLEASE help me with some code examples, or if anybody has done
something similar? Any tips would be MUCH appreciated.
Thanks in advance
Alex

You posted your message on the *italian* C++ newsgroup. You might have 
better luck with comp.lang.c++ or alt.learn.c++ . Note however that your 
post sounds suspiciously like a rephrased assignment. This kind of 
message is not always well received in these newsgroups.
Cheers,
Nicola Musatti

Newsgroup: it.comp.lang.c++
Titolo: boost_signals

Ciao a tutti,
sto giocando un po' con la libreria boost_signals, ma c'è una cosa che non
riesco a fare. In pratica vorrei che, quando il segnale viene emesso, fosse
chiamata una certa funzione di una classe, tipo così:
#include <boost/thread.hpp>
#include <boost/signal.hpp>
#include <iostream>
using namespace std;
using namespace boost;
class prova
{
public:
	prova() {};
	~prova() {};
	void operator() () { cout << "operator()" << endl; };
	void on_signal() { cout << "on_signal()" << endl; };
};
int main(int argc, char* argv[])
{
	prova p;
	signal<void ()> p_signal;
	p_signal.connect(p); // questo chiama operator()
	// p_signal.connect(&(p::on_signal)); // questo non compila
	p_signal();
	return EXIT_SUCCESS;
}
Sapete dirmi dove sbaglio? Sto leggendo la documentazione ma non è che mi
sia chiarissima...
Ciao
  Andrea

 }
Ciao,
Nicola

          p_signal.connect(bost::bind(&prova::on_signal, p));
Funziona, grazie :) in effetti poi l'ho trovato anche nel capitolo
dedicato al connection managment.
Grazie ancora.
Ciao
  Andrea

Newsgroup: it.comp.lang.c++
Titolo: Sito C++Builder

Conoscete un buon sito dove poter scaricare esempi per il C++Builder ?
Grazie
Saluti da Eugenio


Il sito di Mark Cashman non è male:
http://www.temporaldoorway.com/programming/cbuilder/index.htm
Newsgroup: it.comp.lang.c++
Titolo: C# (C sharp)

Qualcuno ha sentito di questo nuovo linguaggio C#  ?
(dicono che si pronunci C sharp) .
Grazie


Se vuoi un'apologia,
http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp
piu' interessanti dell'articolo sono i commenti dei lettori...
Ciao,
Gianfranco

>
Peccato che char e wchar_t sono cose diverse in C++, in questo caso
C# semplifica perche` toglie controllo, cosi` come __int64 non e` un
tipo C++, ma una estensione non standard!
Molte colpe poi attribuite al C/C++ sono poi in realta` problemi
introdotti da MS nelle tante cose non ben fatte.
Concludo con una frase che mi era venuta in mente quando partecipai
a quel (molto sui generis) seminario su C# (frase che un'altra persona
ha esplicitato sul sito della MS), "perche` invece di tirare fuori
novita` piu` o meno discutibili, MS non standardizza a pieno il suo
VC++ eliminando molti di quelli che ritiene problemi del C++?"
Paolo
-------------------------------------------
  Paolo Marotta
 
http://web.tiscalinet.it/paolo_marotta/
-------------------------------------------

 ha scritto nel messaggio
news:pvbnrs0vqcd5fkj2v...@4ax.com...

Per fortuna che non hanno detto "un'altra cosa scocciante è dichiarare
una variabile prima di usarla, con il C# questo è non è più
richiesto..."
Manlio Perillo

richiesto..."
c'e' sempre la versione 1.1 ....
Newsgroup: it.comp.lang.c++
Titolo: Matrici dinamiche. Cosa sbaglio?

Ciao a tutti.
Ho un problemino con le matrici dinamiche che non riesco a risolvere. Il 
compilatore (MS Visual C++) continua a riportarmi due errori.
Vi scrivo il codice e gli errori.
Cosa sbaglio?
#include <stdio.h>
#include <malloc.h>
int main()
{
 int DIM;
     int i, j;
     int **MAT;
     printf("Numero di nodi?");
     scanf("%d",&DIM);
     MAT=malloc(DIM * sizeof(int*));
     //error C2440: '=' : cannot convert from 'void *' to 'int ** '
     //Conversion from 'void*' to pointer to non-'void' requires an explicit 
cast
for (i=0; i<DIM ; i++)
    MAT[i]=malloc (DIM*sizeof (int));
    //error C2440: '=' : cannot convert from 'void *' to 'int *'
    //Conversion from 'void*' to pointer to non-'void' requires an explicit 
cast
    return 0;
}
Grazie a chiunque voglia aiutarmi. 

      MAT=malloc(DIM * sizeof(int*));
questo e' C e non C++. Stai scrivendo su di un NG di C++.
se scrivi sul NG di C saro' lieto di risponderti.
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Davide ha scritto:

Mancano i cast espliciti; stai scrivendo in C (non c++, tra l'altro), e
quindi i cast vanno in stile c:
MAT=malloc(DIM * sizeof(int*));
diventa:
MAT=(int**) malloc(DIM * sizeof(int*));
MAT[i]=malloc (DIM*sizeof (int));
diventa:
MAT[i]=(int*)malloc (DIM*sizeof (int));
Beh, usare la "new" al posto della malloc non può far male, no?
(incidentalmente, era meglio usare calloc, non malloc)
#include <iostream>
int
main(int argc, char* argv) {
  int DIM;
  int **MAT;
  std::cout << "Numero di nodi?";
  std::cin >> DIM;
  MAT = new int*[DIM];
  for(int i=0; i<DIM; i++ )
    MAT[i] = new int[DIM];
  // le delete sono a tuo carico...
  for( int i=0; i<DIM; i++ )
    delete [] MAT[i];
  delete [] MAT;
}
PS: gli include standard per le librerie C sono "#include <cstdio>" e
non "#include <stdio.h>" e così via. malloc è in cstdlib.
Almeno, così mi dicono...
-- 
Matteo Settenvini
FSF Associated Member
Email : 
mat...@member.fsf.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++
P?>++ L+++>$ E+>+++ W+++ N++ o?
w--- O- M++ PS++ PE- Y+>++
PGP+++ t+ 5 X- R tv-- b+++ DI+
D++ G++ e h+ r-- y?
------END GEEK CODE BLOCK------