mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Grafica e incompatibilita' con Windows

Ciao a tutti, non ho mai scritto prima a questo newsgroup e adesso vorrei
porvi un problema che ho riscontrato programmando in C++.
Quando provo ad includere la libreria grafica  <graphics.h>  il compilatore
mi dice che il GBI non e' windows compatibile.
Sapete dirmi come risolvere il problema?
In quale altro modo posso utilizzare le funzioni grafiche?
Grazie mille per le eventuali risposte.

 porvi un problema che ho riscontrato programmando in C++.
Cominciamo male, il C++ col tuo problema non ci azzecca un tubo.
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. 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

Newsgroup: it.comp.lang.c++
Titolo: Passaggio di array tramite COM

Posto questo problema anche a voi, magari è più di vostra competenza:
Salve a tutti , sono in un punto morto.
Ho creato in VC++ una DLL/AX con interfaccia COM
Mi serve perchè in VB mi mancano alcune funzionalità che posso recuperare da
altre librerie in C++.
Adesso mi serve passare invece che solo una stringa, un array di stringhe,
Finche era solo una stringa, bastava dare all'IDL:
BST *stringaDaPassare
e me l'accettava.
Ma per un array di stringhe non ho trovato niente. Ho provato anche VARIANT,
me lo accetta, ma poi all'interno è tutto vuoto!
Aggiungo che mi hanno dato il suggerimento di usare SAFEARRAY e in special
modo:
STDMETHOD(prov)(/*[in]*/ SAFEARRAY(BSTR)* pipp);
ma il compilatore mi da questo errore:
error C2061: syntax error : identifier 'tagSAFEARRAY'
che da MSDN dice:
syntax error : identifier 'identifier'
The compiler found identifier where it was not expected. This error can be
caused by enclosing an initializer in parentheses. The error can be avoided
by enclosing the declarator in parentheses or making it a typedef.
In sostanza non ci ho capito niente, qualcuno conosce il modo per farlo
funzionare?
Grazie!
Maverick

 Maverick
Questo non c'entra con il *linguaggio* C++, ovvero con il C++ standard, 
che e' l'argomento di questo ng. Prova a postare su newsgroup piu' 
adatti, come it.comp.programmare.win32 - ciao ;)
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */
Newsgroup: it.comp.lang.c++
Titolo: Path compilatore

ho scaricato il compilatore per c contenuto nei minigw, come posso
inserire il compilatore nel path di windows xp?
Grazie a tutti

 Grazie a tutti
risorse del compiuter --> proprieta' --> avanzate --> variabili
d'ambiente -->
ora qua' puoi decidere se impostarti un path per l'utente tuo privato, o
modificare il globale di sistema.
per il globale di sistema basti che lo aggiungi alla fine degli altri con
;C:\ecc
se invece ne ricrei uno tuo personale prova ad usare la sintassi :
PATH=%PATH%;C:\ecc
che dovrebbe cosi' facendo tenerti il path globale del sistema ed aggiungere
solo i tuoi path in piu' ...
ciao

Newsgroup: it.comp.lang.c++
Titolo: TASTIERA CON "GRAFE"

Ciao!
qualcuno sa se esiste una tastiera per noi programmatori che inserisca
direttamente le parentesi grafe senza dover digitare ogni volta ALT+123 o
ALT+125 ???
Grazie a tutti!
Davide
dad...@tin.it

...


 wrote in message 7k09sg$pok$1...@nslave1.tin.it...



Certo che esiste!! Il problema e' trovarla.
Io mi porto dietro la mia cherry americana da ormai 12 anni (era di un
8088!), e finora di computer ne ho cambiati una decina, di cui sette mi sono
rimasti sul groppone.
Pensa: 12 anni di onorato servizio e nemmeno un tasto scolorito!
:-))))))))
Altro che le tastiere di oggi....
E poi ha un feeling che e' una bellezza...
Va be, basta cosi'.
Comunque basta trovare una tastiera americana, o in alternativa (cosa che
faccio quando devo lavorare su macchine non mie) usare keyb us dal dos per
avere il layout americano (ma poi devi ricordarti i tasti a memoria).
Saluti,
Marco

ALT+125 ???
La tastiera USA standard!
E` la prima cosa che ho richiesto ogni volta che ho acquistato un pc!
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 ALT+125 ???
Certamente: ad esempio, tutte le tastiere americane (come la mia). A
proposito: si chiamano "parentesi graffe", non "grafe".
EMG

 Altro che le tastiere di oggi....
Sono perfettamente d'accordo.
EMG

 ALT+125 ???
La tastiera americana contiene tutti i caratteri necessari (comprese {}),
e i caratteri piu' usati sono in posizione piu' comoda (niente shifi per
il `;').
	Mauro

 >


Newsgroup: it.comp.lang.c++
Titolo: dubbio : operator overlad. Usare una funzione non membro (priva di THIS pointer)

 
Come si faceva più ?
Si dichiara il prototipo dentro come FRIEND, e si scrive il 
codice fuori, con argomenti, arity, return type opportuno ?
 
E invece volendo dichiararla come parte integrante della 
classe ma non "membro" di istanza ? Si dichiara STATIC ?
non me lo ricordo più ... ho lo Stroustroup in una stanza al 
momento inagibile :-\
 
-- 
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
 

 
 
forse, ma non vedo a cosa può servire.
 
Ciao!
Newsgroup: it.comp.lang.c++
Titolo: Aiuto urgente !

Ciao a tutti !
avrei bisogno di qualcuno esperto che riuscisse ad interpretare questa
scritta:
Runtime error 200 at 0E9E:0091
Mi appare quando faccio partire un file .exe
(solo una volta o due è partito correttamente, è un programma che consiste
in quel solo file)
Se avete delle soluzioni a questo fatto per me inspiegabile rispondetemi su
timeb...@freemail.it

Runtime error 200 at 0E9E:0091
Non centra nulla con il C++ ... comunque si tratta di un errore
tipico dei programmi Borland Pascal o C per DOS in cui gli
autori della libreria non avevano considerato che i processori
sarebbero in futuro diventati *molto* veloci.
La libreria cerca di calcolare quanti loop "a vuoto" deve fare
per aspettare un millisecondo (cosa che torna utile per la
funzione Delay) e per farlo contano i loop a vuoto che vengono
fatti in 55ms e poi dividono per 55 (il timer standard sotto DOS
infatti ha un periodo di 55ms).
I computer attuali riescono pero' a fare un numero *esagerato*
di loop a vuoto in 55ms e quindi al momento della divisione
si ottiene un overflow.
La Borland non ha mai rilasciato una patch ufficiale ma esistono
in internet alcuni programmi che modificano gli *eseguibili* per
risolvere il problema. Il Borland Pascal veniva fornito anche
con i sorgenti completi delle librerie e quindi e' anche possibile
correggere il problema a livello di *sorgente* e ricompilare la
libreria standard per fare in modo che nuovi programmi compilati
non soffrano del bug.
Il fatto che Borland ignori completamente i problemi che hanno
utenti del Borland Pascal con programmi scritti solo qualche
anno fa la dice secondo me lunga sui rischi di appoggiarsi ad
un prodotto (che muore istantaneamente nel momento in cui il
produttore se ne disinteressa) invece che ad un linguaggio
standard.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff
Newsgroup: it.comp.lang.c++
Titolo: come creare 'onmouseout'

Ciao a tutti, è la prima volta che posto.
Volevo chiederevi se avete la soluz. al mio problema.
Creando un oggetto bottone (Button, Tbutton, Commandx, etc...) tutti
generalmente supportano l'evento mousemove che mi è utile per
l'evidenziazione al passaggio del mouse, inoltre con mousedown e mouseup
posso gestire il press e depress del bottone. Ma come faccio per avere un
evento OnMouseOut REALE?? (cioè non controllando il mousemove sulla form per
il ripristino del bottone)
Uso BCB5.0, ma anche se me lo dite in VB non ci sono problemi.
Grazie, ciao! .-=KoraL=-.

Su it.comp.lang.c++ questo messaggio e' fuori argomento: per favore
eliminate il gruppo dai destinatari.
Grazie,
Nicola Musatti

In C++ questo messaggio è spedito da WM_MOUSELEAVE, come per OnMouseOver da
WM_MOUSEHOVER. Però nel mesasggio WM_MOUSEMOVE, devi prima chiamare la API
TrackMouseEvent con la apposita struttura.
Newsgroup: it.comp.lang.c++
Titolo: Linux & Assembly

Scusate ma qualcuno ha idea di dove trovare un manuale che spieghi a
programmare in assembler per Intel sotto linux?

programmare in assembler per Intel sotto linux?
www.linuxassembly.org
 <se e` attivo>

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

Sono disperato: devo poter includere immagini e suoni in un programma DOS
scritto con il C++ Borland.
Chiunque possa aiutarmi (magari con sorgenti e/o file .h), per favore, lo
faccia!
lpre...@tin.it
GRAZIE!!

...

Non perfettamente attinenti, ma intanto meglio di nulla:
Alla mia homepage, sotto la voce programmazione, troverai un lungo testo che
spiega queste cose (mouse, immagini etc. ) e sopratutto un bel link ad un
sito ftp con tutto il materiale che vuoi per farti le tue librerie o trovare
quelle gia' fatte.
Buon lavoro !
                       Paolo Campanella
 
pa...@mbox.ulisse.it
http://www.geocities.com/SouthBeach/Marina/8135

...
:
:Alla mia homepage, sotto la voce programmazione
[snip]
:                       Paolo Campanella
:                     
pa...@mbox.ulisse.it
:
http://www.geocities.com/SouthBeach/Marina/8135
:
:
Il link alla voce programmazione non e' funzionante.
Meglio se la controlli.
Ciao

 Il link alla voce programmazione non e' funzionante.
Srano, a me funzia, riprova!
 ciao :)
Newsgroup: it.comp.lang.c++
Titolo: richiesta d'aiuto

Domanda: Come posso fare per leggere i dati contenuti nel disco rigido
indirizzandoli per numero di settore e offset?
grazie
    Nemo Fox

 indirizzandoli per numero di settore e offset?
Solo e strettamente in modo dipendente dalla piattaforma; non
esiste un approccio C++ standard che tu possa usare dovunque.
Chiedi dunque sul gruppo dedicato alla discussione della tua
specifica piattaforma d'interesse...
Alex
Newsgroup: it.comp.lang.c++
Titolo: [Visual C++ 6.0] Problema di link... penso

Ciao a tutti...
Mi trovo con un bel problema da risolvere e sinceramente non so come 
uscirne (ho un esame sabato e mi serve il visual C++)
Premetto che non conosco molto bene il linguaggio C++ nč il programma 
della microsoft... 
Oggi compilando il debugger mi ha desinito due errori:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol 
_WinMain@16
Debug/pippolo.exe : fatal error LNK1120: 1 unresolved externals
Sapete dirmi a cosa sia dovuto?
Io ho usato winXP fino a poco fa. Ora per diversi motivi ho installato 
il 2000 con il quale mi trovo (ovviamente!!!) decisamente meglio. 
Tuttavia credo sia questo il motivo per cui mi tira fuori questo errore, 
dal momento che prima ha sempre funzionato. 
Gli errori che vi ho indicato prima sono stati mostrati durante la 
compilazione di un programma piů che semplice:
void main (void)
{
}
Quindi ovviamente privo del minimo errore. L'ho scritto apposta per 
vedere se fosse un problema del compilatore...e  cosě č! 
Che posso fare?
ciao e grazie
-- 
-Diego (Atos)-

 vedere se fosse un problema del compilatore...e  così è!
Scusa?? main DEVE essere dichiarata così:
int main ()
int main (int argc)
int main (int argc, char* argv[])
E in nessun altro modo. Ma questo non è il tuo problema. Posta su
news://it.comp.programmare.win32 per risolverlo. [Hint: crea un progetto di
tipo Win32 Console Application]. Ciao.
-- 
Andrea Bergia - studente          Linux Registred User #281550
Per favore non mandatemi allegati in Word o PowerPoint.
Si veda 
http://www.fsf.org/philosophy/no-word-attachments.html

 Ciao a tutti...

 Console Application.
Si si... mi ero accorto di aver selezionato male il tipo di applicativo. 
Mia distrazione
ciao ciao
-- 
-Diego (Atos)-
Newsgroup: it.comp.lang.c++
Titolo: finastra per sfondo installazione

ciao, vorrei creare una finestra senza titolo, senza bordi e che sia grande
come tutto lo schermo.... come le finestre-sfondo sfumate dei programmi di
installazione.
ho creato la mia finestra (derivata da CWnd) con queste due istruzioni:
 CString strWndClass=AfxRegisterWndClass(
        0,
        theApp.LoadStandardCursor(IDC_ARROW),
        (HBRUSH)(COLOR_WINDOW+1),
        hIcona);
 CreateEx(
        0,strWndClass,"DidaSetup", WS_VISIBLE|WS_DLGFRAME,
        0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),
        NULL,NULL,NULL);
ma la finestra che viene creata ha il titolo e il bordo (che non voglio
vedere).... eppure io non ho specificato l'attributo WS_CAPTION!
Ho pensato allora di crearla un po' più grande e posizionarla in modo che il
caption risulti fuori dallo schermo e così risulti invisibile.... voi
conoscete un modo migliore per ottenere quello che voglio?
c ya!
/\/\etal Dave
<<<< 
DucaCr...@iol.it
 >>>>>
--
Posted from [195.99.97.2]
via Mailgate.ORG Server - 
http://www.mailgate.org

Ciao,
per creare finestre liscia liscia, ovevro senza caption, bordi, ecc.. puoi
utilizzare lo stile WS_POPUP.
ciao, Franco.
Franco Torrini - Software Engineer - 
f.to...@virtuart.it
VIRTUART - C.C.D. Creative Computer Design S.p.A.
Via di Quarto Annunziata, 80/b - 00189 Rome, Italy
Tel. 
+39 06 33076638
 - Fax. 
+39 06 33076670

Newsgroup: it.comp.lang.c++
Titolo: quale editor?

c'è qualke esperto ke può consigliarmi su quale editor(gratuito
possibilmente) usare per programmare in c/c++? un editor ke contenga
anche anke qualke libreria utile... Grazie molte

 anche anke qualke libreria utile... Grazie molte
Ce ne sono tanti meglio del tuo che inserisce troppe "k" nel testo... 
-- 
Luc
Newsgroup: it.comp.lang.c++
Titolo: delete this

Saluti.
Ho dei dubbi su questo codice:
class foo;
foo* f(foo* p) 
{ 
  delete p; 
  return p; 
}
class foo
{
  // ...
  public:
    foo* method()
    {
        return f(this);
    }
};
 
Mica ci sono problemi in method dato che
l'instanza viene distrutta?
Saluti e grazie  Manlio Perillo 

 l'instanza viene distrutta?
In generale, invocare 'delete' su 'this' è sicuro se abbiamo garanzia
che nessun metodo o membro dell'oggetto verrà sucessivamente
utilizzato. Il che sostanzialmente vuol dire che se "delete this" è
l'ultima istruzione prima del return, dobbiamo essere certi che nessun
oggetto automatico nella funzione cerchi di usare il valore del nostro
'this' nel suo distruttore. (Il caso tipico sono le guardie che usano
il pattern IIRA per il release automatico di un lock, o cose simili.)
Nel tuo caso, la situazione è complicata dal fatto che il valore del
puntatore viene invalidato e poi restituito dalla funzione. (Per
inciso, non mi è chiaro che senso abbia restituire un puntatore che
sappiamo essere invalido.) Lo Standard dice che non è consentito usare
un puntatore non valido. Non è però chiaro come questo vada inteso. Ci
sono state alcune discussioni sui NG in passato, in cui alcuni hanno
sostenuto che anche solo *copiare* un puntatore non valido è
un'operazione che non garantisce un comportamento definito. Alcuni
hanno citato piattaforme in cui ciò può realmente generare problemi.
Max


Non avevo mai pensato a questo tipo di problema!
Comunque nel mio caso non ci sono problemi in quanto
il puntatore e' 0 se l'instanza e' stata distrutta.


Newsgroup: it.comp.lang.c++
Titolo: Algoritmi genetici / Logica Fuzzy

Ciao,
Mi serve del codice per gestire dei soldatini e mezzi vari stile
C&C o RedAlert in modo che compiano attacchi, pattuglie...
C'e' qualcuno che ha gia' scritto qualcosa o parto da zero??
Avete suggerimenti/idee/bookmark ?
Cix.


Sui bot, così vengono chiamati gli agenti intelligenti di un gioco di
strategia, puoi trovare molta documentazione su internet. Con qualche ricerca
dovresti trovare tutto il materiale desiderato. Comunque, eccoti quà due link:
http://www.yahoo.com/Recreation/Games/Computer_Games/Programming/
http://www.cris.com/~swoodcoc/resources.html
Il primo è la pagina di yahoo relativo all'argomento. Il secondo ti porta ad
un sito molto interessante.
Ciao.

Dimenticavo, altri link:
http://www.cs.cmu.edu/Groups/AI/html/faqs/ai/fuzzy/part1/faq.html
http://www.emsl.pnl.gov:2080/proj/neuron/neural/systems/shareware.html
http://www.shef.ac.uk/psychology/gurney/notes/contents.html
http://ai.eecs.umich.edu/cogarch0/subsump/
http://www.cs.cmu.edu/Groups/AI/html/faqs/ai/fuzzy/part1/faq.html
http://forum.swarthmore.edu/~jay/learn-game/index.html
http://www-anw.cs.umass.edu/~rich/book/the-book.html

Dimenticavo, altri link:
Grazie.
Newsgroup: it.comp.lang.c++
Titolo: Problema su file AIUTO

Ciao ragazzi ho un problema.voglio leggere un file e copiarlo in un'altro
col nome 
diverso.il
 problema e che quando il file non e' di testo (ad
esempio e' un 'applicazione) il file risultante e' diverso.lo apro in
binario ee uso come buffer un puntatore a char.perche' non mi funziona?
grazie ciao

 wrote in message
ac2ns3$bb9$1...@lacerta.tiscalinet.it...

Quando lo ricopi sull'altro file come indichi quanti byte scrivere ?
se usi la funzione strlen sull'array di char potresti beccarti un
troncamento dovuto a qualche '\0' .
AnTor

Non credo sia questo il problema perchè copio un numero fisso di byte fino a
quando non finisce il file.Allora quale e' il problema?.
Grazie ciao

Newsgroup: it.comp.lang.c++
Titolo: ptr e array come parametri.

Salve a tutti,
potreste chiarirmi questi piccoli dubbi?
#include <iostream>
int matrix [4][5];
int* ptrarray[6];
int** pptr;
void Fmatrix (int param [][5]){};
void Fptrarray (int* param []){};
void Fpptr (int** param){};
int main () {
 Fmatrix (ptrarray);
 //Secondo il compilatore (* []) è incompatibile con ([] [])
 Fmatrix (pptr);
 //Secondo il compilatore (* *) è incompatibile con ([] [])
 Fptrarray (matrix);
 //Secondo il compilatore ([] []) è incompatibile con (* [])
 Fpptr (matrix);
 //Secondo il compilatore ([] []) è incompatibile con (* *)
 return 0;
}
Ma scrivere:
int foo (int array [][5]);
non equivale a:
int foo (int* array[5]);
???
Se così fosse, non capisco l'errore, dato che (* []) è compatibile con (* *)
e viceversa.
Grazie
--
Luigi
byte...@hotmail.com
http://web.tiscali.it/luigi_web
ICQ #46240443

???
Niente affatto.
int foo(int array[][5]);
equivale a scrivere:
int foo(int (*array)[5]);
--
Andrea Laforgia - walkietalkie(at)
libero.it
http://www.geocities.com/AndreaLaforgia
Newsgroup: it.comp.lang.c++
Titolo: Lettura dati di vecchie versioni programmi

Che metodo utilizzate per far in modo che un utente, quando fa 
l'aggiornamento del programma, possa leggere i dati delle vecchie 
versioni?
Ad esempio, nella vecchia versione la funzione che scriveva i dati era 
questa
MyClass::scriviDati()
{
	FILE *file;
	fwrite((char *)&dato1,sizeof(int),1,file);
	fwrite((char *)&dato2,sizeof(int),1,file);
}
se nella nuova versione, per l'aggiunta di nuovi dati,  la funzione che 
legge e':
MyClass::leggiDati()
{
	FILE *file;
	fread((char *)&dato1,sizeof(int),1,file);
	fread((char *)&dato2,sizeof(int),1,file);
	fread((char *)&dato3,sizeof(int),1,file);
	fread((char *)&dato4,sizeof(int),1,file);
}
Utilizzando la nuova versione per leggere dati scritti con la vecchia, i 
dati dato3 e dato4 risulteranno indefiniti e potra' aversi un errore.
Un metodo potrebbe essere quello di mettere sempre un flag tipo
MyClass::scriviDati()
{
	int flag=100;
	FILE *file;
	fwrite((char *)&dato1,sizeof(int),1,file);
	fwrite((char *)&dato2,sizeof(int),1,file);
	fwrite((char *)&flag,sizeof(int),1,file);
}
Cosi' la nuova versione lo legge e decide se leggere anche i dati 
successivi
MyClass::leggiDati()
{
	int flag;
	FILE *file;
	fread((char *)&dato1,sizeof(int),1,file);
	fread((char *)&dato2,sizeof(int),1,file);
	fread((char *)&flag,sizeof(int),1,file);
       if(flag>100)
	{
		fread((char *)&dato3,sizeof(int),1,file);
		fread((char *)&dato4,sizeof(int),1,file);
	}
}
Che metodo mi suggerite?
Ciao
Franco

 }
perché non utilizzi un istream_iterator ?
--
Ciao.
Maurizio
P.S.: eliminare _!NO$PAM! per rispodere in privato

 versioni?
- primo modo: il primo byte specifica il numero di versione. Letto quello 
leggo il resto di conseguenza.
- secondo modo: usi un file xml, facilmente parsabile/aggiornabile.
-- 
Luc.

 
[...]
Una migliore soluzione é quella di fornire ai file dati un'intestazione
che riporti la versione del formato. Cosi' facendo potrai leggere
prima l'intestazione, determinare quali routine, metodi o quant'altro
devono essere utilizzate per il corretto trattamento del file.
Fare certe considerazioni a posteriori, avendo a disposizione un
file binario "anonimo" non é facile. 
Valuta bene le informazioni che desideri mantere nel header.
Ad esempio il numero di versione del formato pari ad un byte
potrebbe essere sufficiente nel 99% dei casi : 256 versioni del
formato dati sono *tante*. 
Bye

 dati dato3 e dato4 risulteranno indefiniti e potra' aversi un errore.
Io memorizzerei all'inizio del file la versione utilizzata per
scriverlo e manterrei nel codice sia la vecchia che la nuova funzione
di lettura. Quando trovo un file in vecchio formato lo leggo con la
vecchia funzione, lo converto e lo salvo nel nuovo formato.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Uso dei thread in windows...

Qualcuno mi sa dire brevemente come funzionano i thread in windows? Non sono
riuscito a trovare documentazione sufficentemente dettagliata per capirlo.
Vi avverto che non ho mai usato i thread neanche sotto unix o linux, quindi
avrei bisogno di una spiegazione piuttosto terra terra.
La mia intenzione sarebbe quella di usarli per fare un programmino di chat
che avvi un processo in cui fa in continuazione un revc, e un altro in cui
fa in continuazione uno scanf e un send. Il tutto con socket di tipo
Blocking. Non so usare le socket sincrone :(... Grazie mille.
P.S. Ovviamente se conoscete un sito che mi dia queste spiegazioni, anche in
inglese, vi sarei doppiamente grato.
Grazie di nuovo, ciao.

 riuscito a trovare documentazione sufficentemente
dettagliata per capirlo.
Piuttosto generica e complessa come domanda e meglio se
postata su it.comp.programmare.win32. Comunque per la
documentazione sui threads in Windows, beh, direi di partire
con MSDN no?
http://msdn.microsoft.com/library/default.asp?url=/library/e
n-us/dllproc/base/processes_and_threads.asp
Spero di aver dato almeno un punto di partenza.
==========================
Stefano Frosio
http://www.esse-effe.com
==========================
Newsgroup: it.comp.lang.c++
Titolo: da file a interi....

ciao a tutti, quesito velox...
qual'e' il modo piu' "sicuro" per leggere dei numeri da un file?
questi numeri sono disposti nel seguente modo:
1
2 3
4 5 6 7
9 9 10 23 78
cioe' piu' numeri su ciascuna riga, divisi da spazio.
x sicuro intendo intercettare errori tipo caratteri non ammessi e cose del
genere.
atoi() mi sembra abbastanza scarsina...
PS: prima che me lo chiedate, non so ancora come devo memorizzarli ma penso
cio' sia ininfluente :-)
grazie...

ciao a tutti, quesito velox...
ho il problema leggere dei numeri da un file...
questi numeri sono disposti nel seguente modo:
1 98 7 65
2 3
4 5 6 7
9 9 10 23 78
cioe' piu' numeri su ciascuna riga, divisi da spazio.
vorrei un metodo sicuro intendo intercettare errori tipo caratteri non
ammessi e cose del
genere. atoi() mi sembra abbastanza scarsina in questo senso, oltre che non
standard...
prima che me lo chiedate, non so ancora come devo memorizzarli
(in termini di struttura dati da usare) ma penso che cio' sia ininfluente
in prima analisi era mia intenzione leggerli riga per riga e dopo
convertirli...
in questo caso come mi conviene procedere?
cioe' estraggo la linea
9 9 10 23 78
in uno stringstream, suppongo.
e poi, come faccio a ciclare su di esso per recuperare i numeri?
grazie...


Newsgroup: it.comp.lang.c++
Titolo: Traduzione libro di Bjarne Stroustrup

Ciao a tutti,
vale la pene prendere la traduzione in italiano
del libro "The C++ Programming Language"  di Bjarne Stroustrup
o č meglio la versione originale in inglese?
Dario

 wrote in message
news:9et63e$hbg$1...@taliesin.netcom.net.uk...

Non so per il libro in particolare. Ma in senso totalmente generale una
traduzione non puo' essere meglio dell'originale (o e' allo stesso livello o e'
peggio).
Quindi:
-) se sai l'inglese vai sempre con l'originale che non sbagli
-) se non lo sai ... non credo che tu abbia alternative!
In generale.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556


wrote:

io ho la traduzione in italiano e mi sembra ben fatta, ma non ho mai
visto la versione inglese.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Ciao a tutti,

ho la versione italiana di questo testo... e onestamente non mi sembra
poi tanto male... é fedele all'originale, ma se non hai problemi con
la lingua inglese tanto vale la pena prenderla in inglese
cod

Un motivo in piu' per acquistare la versione inglese e' che ad ogni
ristampa vengono applicate le correzioni agli errori segnalati. Mi e'
gia' capitato di litigare a proposito del contenuto del libro con
qualcuno che aveva una ristampa diversa dalla mia.
Inoltre le ultime ristampe contengono un paio di appendici che erano
disponibili in origine solo sul sito di B.S. e quindi solo nella Special
Edition (quella rilegata, per intenderci). Non so se l'editore italiano
e' altrettanto sollecito...
Ciao,
Nicola

Ciao a tutti,

Si, forse lo é se conosci l'inglese(termini tecnici compresi, che in
fondo sono proprio essi che vanno perduti nelle traduzioni).Altrimenti
mi sembra logico optare per la versione in italiano.
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
-----

 ha scritto nel messaggio
news:9et63e$hbg$1...@taliesin.netcom.net.uk...

Newsgroup: it.comp.lang.c++
Titolo: Allocazione dinamica memoria : array di puntatori

Mi chiedo se è corretto allocare/disallocare la memoria
nel modo seguente:
    ...
    Obj* *objptr=new Obj* [size];
    if(objptr)
       memset(objptr,0,sizeof(Obj*)*size);
    for(int i=0; i<size ; i++)
       objptr[i]=new Obj;
    ...
I miei dubbi sono particolarmente forti quando
si devono distruggere gli oggetti:
E' corretto cosi ?
   ...
   //Prima distruggo i singoli Obj
   for(int i=0; i<size ; i++)
      delete (objptr[i]);
   //Poi l'array di ptr
   delete objptr;
   ...
Oppure così ?:
   //Distruggo il putatore e tutti gli oggetti collegati
   ...
   delete []objptr;
   ...
Oppure sono errati entrambi ?
E allora qual'è la differenza tra "delete objptr"
e "delete []objptr" ?
Ringrazio anticipatamente chiunque vorrà darmi una risposta.
                                                    Lorenzo Girardin
P.S. - Possibilmente via e-mail: 
palla...@assind.vi.it

 e "delete []objptr" ?
  il primo distrugge il puntatore,
  il secondo distrugge l'array di puntatori (non gli oggetti puntati dai
puntatori)
Sandro Carnevali
san...@NOSPAM.geocities.com
http://www.geocities.com/Athens/Delphi/8952

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

Qualcuno potrebbe dirmi se esiste una guida in inglese o in italiano che
spieghi in modo semplice come creare una finestra utilizzando il C++?
Fin'ora ho sempre scritto su DOS, ma mi piacerebbe cambiare e fare finestre.
Grazie.
Luca Carlon

 mi piacerebbe cambiare e fare finestre.
Devi fare la scuola di falegnameria, penso...
:)
-- 
Luc.

spieghi in modo semplice come creare una finestra utilizzando il C++?
C'e' un tutorial di Alex Martelli, in proposito:
http://aleax.supereva.it/TutWin32/index.htm
In ogni caso, se ti piace approfondire questi argomenti,
passa su it.comp.programmare.win32, qui siamo OT.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 wrote:

in Windows? devi usare le rispettive api. 
it.comp.programmare.win32
in Linux? devi usare le funzioni della tua interfaccia preferita.
it.comp.os.linux.development
Newsgroup: it.comp.lang.c++
Titolo: PDF e DXF

Ciao a tutti,
premetto che sono un superneofita della programmazione in c++.
Volevo chiedervi se gentilmente potevate darmi dei lumi
sulla possibilità di esportare disegni e testi creati in c++ su formato DXF
e PDF.
E' possibile o c'è da pagare qualche licenza?
Esiste qualche esempio?
Grazie a tutti
Ciao

 disegni e testi creati in c++
Cioč??? 
-- 
Luc.

> Cioč???
....Glom...immaginavo che sarebbe stato troppo poco...
Beh io pensavo di usare il comando "Ellipse" e poi fare un tastino che mi
esportasse un dxf....

 esportasse un dxf....
Ho capito. Col C++ non centra nulla. Dove lavoro io progettiamo il sw che 
fa (tra l'altro) quello che ti serve (salvando in EPS). Ti assicuro che 
non è una cosa da 4 righe di codice... ;)
-- 
Luc.

Per usare i file DXF, (che tra l'altro sono compatibili con autocad),
devi procurarti la documentazione del formato, trovabile facilmente
(credo) con google. Dopo di che non ti resta che usare qualche
libreria grafica per utilizzarla (vedi line, cerchi, ecc..ecc..)
Ciao
HS_
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ah ok.
Grazie cmnq.


 libreria grafica per utilizzarla (vedi line, cerchi, ecc..ecc..)
Ti ringrazio.
Vedo cosa trovo..


esiste un progetto opensource di stampa in formato PDF con i relativi
sources
una ricercatina sull'apposito sito e potrai ottenere ciò che desideri

Newsgroup: it.comp.lang.c++
Titolo: Lettura a blocchi da file

Salve a tutti,
qualche tempo fa ho visto in un forum una funzione che ora mi tornerebbe 
davvero utile ma non ricordo.
Questa funzione accettava tre parametri: il primo era un vettore dove 
memorizzare l'output di uno stream, il secondo un intero che dava le 
dimensioni di un buffer, il terzo un carattere che indicava fino a dove 
dovesse fermarsi la lettura. Tipo questo
messaggio[512];
nome_funzione(messaggio, 512, s);
Mi aiutate? 


cikko |   
http://cikkox.altervista.org
      | GNU/Linux Registered User #365929
      |    GnuPG/OpenPGP key available


Si era questa. Grazie mille.
Ciao
Newsgroup: it.comp.lang.c++
Titolo: Ancora io.

Questa sorta di codice non gira sul mio compilatore (Borland), mi da errore
sul file che gli passo, anche se scrivo il nome e la path completa. Qualcuno
sa darmi qualche dritta?
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
 main()
 {
char nome_file[25];
           unsigned char temp,temp1;
           unsigned int temp2;
           cout <<"Inserisci il nome del file in lettura come
'nomefile.raw'.";
                              cin >> nome_file;
           ifstream file_read;
           file_read.open (nome_file,ios::binary,1);        // Apro il file
in sola lettura
// e in modalità binaria.
           if (!file_read) { cout <<"Impossibile aprire il file. ";
                             return 1;
                           }
           cout <<"Il file è stato aperto correttamente\n";
           file_read >> temp; //Siccome temp è definita "unsigned char", di
dimensione un byte,
                                       //questa istruzione dovrebbe leggere
un byte per volta e metterlo in temp.
           temp2 = temp;
           cout <<temp2;
           file_read.close();
           cout <<"Il file è stato chiuso orrettamente. ";
           cout <<endl <<"Premere un tasto per continuare...";
           getch();
     return 0;
 }

            cout <<"Il file è stato chiuso orrettamente. ";
Come fai a sapere se il file e` stato chiuso correttamante senza
controllare eventuali errori?
        Mauro

Newsgroup: it.comp.lang.c++
Titolo: Classi e strutture

Ciao visto che non ho mai usato le strutture dentro le classi potete dirmi
come si fà a inizializzarle e a passarle come parametri(sia in ingresso che
in uscita)?grazie mille.
                                                                Stefano

 ha scritto nel messaggio
news:9ufrlp$c47$1...@pegasus.tiscalinet.it...

strutture e classi sono trattate nella stessa identica maniera.
Unica differenza le strutture hanno membri di default pubblici, le classi
prevati.
ciao
Newsgroup: it.comp.lang.c++
Titolo: Puntatori a funzione, parametri e valori di ritorno.

Ho due funzioni definite così:
double PostureReconstructor::calculateDistance(VarsVectorType& x);
double PostureReconstructor::calculateDistance(double *x);
e vorrei riferirmi ad esse attraverso un puntatore a funzione che ho 
definito così:
typedef double (*FunctionStdVectorPoiter) (std::vector<double>&);
typedef double (*FunctionDoubleArrayPoiter) ( double*);
FunctionDoubleArrayPoiter functionDoubleArrayPtr;
FunctionStdVectorPoiter functionStdVectorPtr;
1) Se definisco un solo puntatore cosi':
typedef double (*FunctionPoiter) ();
FunctionPoiter ptr;
posso usarlo per memorizzare entrambe le funzioni (che differiscono per 
il parametro)?
Se la risposta e no (come mi sembra di aver capito) allora nasce questo 
problema:
2) In realtà le due typedef iniziali mi scatenano una graziosa sequela 
di errori. Sebbene nessuno sia un sintax error (ho controllato la 
sintassi sul Stroustrup e mi _sembra_ corretta) mi spariscono 
gentilmente solo quando elimino i parametri nella typedef;
Quindi:
typedef double (*FunctionDoubleArrayPoiter) ( double*); // ERRORE!
typedef double (*FunctionDoubleArrayPoiter) (); // TUTTO OK.
Spero in un vostro ennesimo prezioso suggerimento :D
matteo!

 typedef double (*FunctionDoubleArrayPoiter) ( double*);
i puntatori che devi creare sono "puntatori a funzioni MEMBRO di
PostureReconstructor" quindi devi creare dei double PostureReconstructor::* :
typedef double (PostureReconstructor::*FunctionStdVectorPointer)(std::vector<double> &);
typedef double (PostureReconstructor::*FunctionDoubleArrayPointer)(double *);
ciao
twism

 PostureReconstructor" quindi devi creare dei double PostureReconstructor::* :
Questa non la sapevo e non ci sarei mai nemmeno arrivato :-)
Grazie,
matteo!
Newsgroup: it.comp.lang.c++
Titolo: porta parallela

Salve,
vorrei riuscire a programmare da visual C in windows la porta parallela per
ricevere 8 bit di dato.
Mi sembra di aver capito che bisogna programmare la parallela in modo
bi-direzionale ma non so come farlo.
Qualcuno conosce un modo e mi puo` fornire alcuni suggerimenti ?
Molte molte grazie.
Stefano
(
gh...@eponet.it
)

...


...



Non molto, ci sono le funzioni C  inport e outport ( dipende dal
compilatore )

 soluzioni molto piu` eleganti.
credo che sia possibile aprire un file chiamato LPT1 con fopen o fstream, ma
non ho mai provato
TobiX

...


NOTA: L'espempi relativo alla seriale, e' ovviamente modificabile per la
parallela...


Mica detto. La prota seriale ha diverse modalita' di funzionamento
e diverse velocita', e questo viene egregiamente mascherato
dalle funzioni che settano i parametri di trasmissione.
Per la porta parallela l'unica cosa che puoi fare e' aprirla per
scriversi.
Per leggerci devi settarla in modalita' bidirezionale, e qesto comporta
scrivere ad una porta hardware diversa. Sono convinto che in NT abbiano
definito dei codici per DeviceIOControl() per fare questo, ma non
mi pare siano documentati.
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own

Newsgroup: it.comp.lang.c++
Titolo: Da quale lib viene CloseAllDocuments

Salve a tutti,
	quando uso
		HideApplication();
		CloseAllDocuments(FALSE);
	ottengo un errore in compilazione del tipo "undeclared identifier",
	segno evidente che queste funzioni, previste dal C++, sono
	contenute in qualche lib speciale da me non inclusa. Ebbene,
	non e' che per caso conoscete questa lib? Io non sono riuscito
	a trovarla.
	Grazie.
	Enrico

	a trovarla.
se usi le MFC non c'e' bisogno di nessuna libreria particolare, puo'
darsi che non le chiami correttamente, prova con : 
AfxGetApp()->HideApplication();
Gianpaolo Bottin
- Live Long and Prosper -

AfxGetApp()->HideApplication();
	Ho tentato:
		AfxGetApp()->HideApplication();
		AfxGetApp()->CloseAllDocuments(FALSE);
	ma ho ottenuto solo un'uscita forzata dal programma con un
	classico "il programma ha eseguito un'operazione non valida".
	Stesso risultato se ne ho eseguito alternativamente solo una.
	Mah?!
	Bye
	Enrico

Scusa,
	l'errore dipendeva da un'altra cosa. Ho messo una news apposita
	per chiedere delucidazioni.
	Bye
	Enrico
Newsgroup: it.comp.lang.c++
Titolo: "C++ Fondamenti di programazione" di Deitel

Ciao e grazie in anticipo a chiunque mi risponda!
Sto studiando il libro di Deitel da autodidatta e vorrei sapere da qualcuno
che l'ha gią studiato,quanto ci vuole circa ad impararlo e se gli č sembrato
un testo facile!
Ciao
Francesco

ciao, io studio ing. informatica; e ho dato un esame con quel libro...
mi ci sono trovato bene: spiega bene, apprezzo molto lo stile di
programmazione che usa ed è zeppo di codice... e poi il cd.
Si merita un 8.5 !
PS. ci sarebbe il secondo volume, ma nn mi ha convinto come il primo...
Ti consiglio comunque di prenderlo, e magari passare poi al " C++ Style"
buon codice,
Zao
Daniele

 un testo facile!
Mi è sembrato un buon testo anche per principianti, perché si addentra anche
nel funzionamento della macchina. Ben fatto, graduale e ricco di esempi. Ti
consiglio di evitare di usare sulle prime il compilatore Visual C++ fornito
a corredo, prova con quello Borland gratuito o usa il g++ se sei sotto
linux.
Probabilmente non è il caso tuo, ma studiando il C++ per Ingegneria del
Software le sezioni sulla progettazione in UML mi sono tornate utilissime.
Sul secondo volume "Tecniche avanzate" non ti so dire niente xché non l'ho
ancora letto :)
Ciao
~~
artemis.alpeia
Newsgroup: it.comp.lang.c++
Titolo: Ereditare o no!

Devo implementare una classe che mantenga un elenco di oggetti.
Presupposto che i metodi e le proprietā da gestire sono minime (ad.
TotElementi, GetFirst() e GetNext() e Remove() ) e che non desidero altre
interfacce pubbliche:
Secondo voi č pių opportuno ereditare da una classe List e sovrapporre i
membri o ereditare da Object (la madre di tutte le classi) e inserire List
come membro della mia classe richiamando i suoi metodi/propietā.
Ciao.

Sei sicuro di aver scritto sul newsgroup giusto? In C++ non esiste una
classe Object radice dell'intera gerarchia come dici tu (che esiste
invece in Java). In ogni caso generalmente si eredita da un'altra classe
esclusivamente se si intende rispettare l'intero contratto stabilito
dall'interfaccia della classe base, ovvero si intende permettere
l'accesso alla propria classe attraverso puntatori o reference alla
classe base.
L'eventuale lista che userai per gestire i tuoi elementi (e spero che tu
intenda usare una std::list invece che inventarne una nuova) e' un
dettaglio implementativo da rappresentare tramite un membro dato
privato, piuttosto che con una superclasse.
Ciao,
Nicola

come membro della mia classe richiamando i suoi metodi/propietà.
Entrambi i metodi possono essere considerati valid. Dipende da come ti
trovi meglio.
La differenza è che tramite ereditarietà poi utilizzare le definizioni
della superclasse come se fossero definite nella stessa ed è poi compito
del compilatore andare a cercare le definizioni nelle classi basi.
Nel secondo, invece, devi per forza utilizzare il membro istanza definito
nella classe per compiere tali operazioni. Quindi tale riutilizzo di codice
- per contenimento diretto  - aggiunge un livello di indirezione da gestire
e qualche volta potrebbe causare eventuali errori.
PS: Sei un programmatore Java, vero? 
La classe Object del Java non è presente in C++. Inoltre C++ non prevede
una clausola implicita come l'extends java.lang.Object nel caso che non si
indichi superclasse alcuna.
Ciao.
-- 
La classifica dei prodotti MS:
C#, la migliore barzelletta di Bill Gates.
Visual C++, il meno standard dei compilatori C++.
J++, la copiatura più riuscita.
Windows, il più instabile.
Visual Basic, un esempio di prodotto decente della MS - forse l'unico -.
OutlookExpress, scandali su scandali.
La classifica degli "amici" coglioni:
Stefano Zanchi, il miglior lamer del mondo.
 

 Nicola
Ciao,
Paolo

 Centrato, avrei usato TList ma userò TObject e una TList come membro.
Tieni presente che tanto TObject quanto TList sono classi della libreria
VCL della Borland e non appartengono a nessuno standard.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Inserire una DLL

Ho un file include  portos.h  e una dll   portos.dll (probabilmente scritta 
con Microsoft C Visaual.)
Io use Cbuilder 6,  e non so come fare ad inserirla in un  mio 
applicativo...
Grazie a quanti risponderanno 

 applicativo...
Devi creare, se non esiste, il file portos.lib che rappresenta
il file di esportazione della libreria. Per crearlo c'è l'utility
implib della borland (presente nella dir bin del C++Builder).
Lo inserisci nel progetto in cui vuoi usarlo ed è fatta!
Usi la include come si fa di solito...

 Devi creare, se non esiste, il file portos.lib
Grazie tutto ok
Newsgroup: it.comp.lang.c++
Titolo: istream::getline(char*,streamsize)

Scusate la banalita' del mio quesito, ma sono alle prime armi con la
libreria standard...
Cercando tra i vecchi post ho trovato vari thread sull'argomento
getline, ma nulla su questo problema specifico:
#include <iostream>
int main ()
{
  char buffer[128];
  std::cout << "Linea1: ";
  std::cin.getline(buffer, sizeof(buffer));
  std::cout << "Linea2: ";
  std::cin.getline(buffer, sizeof(buffer));
  return 0;
}
La prima getline non termina finche' non premo due volte <invio>.
La seconda invece va bene.
Sostituendo la getline di "Linea1" con:
  std::cin.get(buffer, sizeof(buffer));
  // Ora rimuovo il newline che sarebbe
  // rimosso automaticamente da getline
  std::cin.get();
il problema si sposta alla getline di "Linea2".
Siccome questo comportamento si manifesta sia con VC5 che con BCC55,
presumo non si tratti di un baco nell'implementazione di getline.
Cosa mi sfugge?
Grazie a tutti,
Paolo Galassi

 La prima getline non termina finche' non premo due volte <invio>.
A me funziona perfettamente con il BCC55. Hai preso la patch che lo
porta alla versione 5.5.1?
EMG

}
Riguardo al VC non so dirti niente, ma sul mio Builder 3.0 funziona
alla perfezione.
Il Ghenio
-----
E'più oscuro del crepuscolo, é più rosso del sangue,
in nome della pace e della giustizia faccio appello a
tutti i poteri più remoti dell'oscurità, perché mi
aiutino a distruggere i miei nemici e tutti coloro
che saranno tanto sciocchi da ostacolarmi. FULMINE ROSSO!!
(Slayers)
-----


con il gcc 2.95.2 funziona esattamente, prova in ogni caso a forzare il
flush del buffer
std::cout << "Linea1: ";
std::cout.flush();
ciao Nicola Z.

 std::cout.flush();
Non dovrebbe servire; tra cout e cin c'e' un tie(), ed il buffer di
uscita viene svuotato automaticamente quando viene effettuata una
lettura.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
A C++ exception is when the code gets in trouble and says:
"Beam me up, Scotty!".

porta alla versione 5.5.1?
Non l'ho presa.
Provvedero' al mio rientro dalle ferie...

std::cout.flush();
L'avevo gia' provato prima di postare, per disperazione, anche se
immaginavo che non servisse.
Comunque grazie.

lettura.
Infatti.  Inoltre non vedo che relazione possa esserci tra questo
problema e il flush su cout.  Cioe', se cout non fosse legato a cin
(con tie()), al limite potrebbero esserci problemi nella
visualizzazione di "Linea1: ", ma l'input da cin dovrebbe comunque
funzionare regolarmente.
O sbaglio?
Ragazzi, mi dispiace tantissimo non poter continuare a seguire questo
thread (e il resto di iclc++) ma *purtroppo* domani dovro' partire e
stare in ferie qualche settimana.  Recuperero' gli eventuali reply al
mio ritorno e magari riprendero' il discorso.  Ciao a tutti e buone
feste!
Paolo Galassi
Newsgroup: it.comp.lang.c++
Titolo: Problema riferimento a classe

Salve a tutti,
vi chiedo un vostro parere per risolvere questo problema. Sono quasi
sicuro che c'è una semplicissima soluzione, ma non riesco a trovarla
(o meglio: sono ancora un pivello del C++)!
Vi spiego il mio problema.
Ho una classe, diciamo CConf, che ha un membro pubblico di classe
CContainer che è una collection di dati di configurazione. Alcuni
membri della classe CContainer hanno bisogno di eseguire una funzione
membro della CConf per verificare se il dato impostato è corretto o
viola dei vincoli (valori entro i limiti, feature supportate o
meno...).
In breve:
class CConf; // forward per m_pParentConf
class CContainer
{
	friend class CConf;
	CArray m_array;
	const CConf* m_pParentConf;
	CContainer(const CConf* pConf) : m_pConf(pConf) {};
	virtual ~CContainer() {};
public:
// membri rimossi
};
class CConf : public CConfBase
{
public:
	CContainer container;
	CConf() : container(this) {}; // <<<<<<<  WARNING!
	virtual ~CConf();
// membri rimossi
}
Il codice viene compilato, ma un warning mi avvisa che è sconsigliato
"utilizzare this nell'elenco degli inizializzatori di una classe"
perchè i "costruttori delle classi base e dei membri di classe vengono
chiamati prima del costruttore this" e cosi si otterrebbe che "un
puntatore a un oggetto non costruito è stato passato a un altro
costruttore" con le ovvie conseguenze se "gli altri costruttori
accedono a membri o chiamano funzioni membro su tale puntatore".
Potrei fregarmene del warning (gli altri construttori non accedono a
tale puntatore), ma mi sembra una pessima soluzione.
Quindi come posso riprogettare le classi per ottenere comunque un
riferimento alla CConf?
Ho pensato di spostare l'inizializzazione del membro m_pParentConf
fuori dal costruttore, ma è comunque poco pratica e "error prone"
perchè dovrei dichiarare il membro non const e ricordarmi di
inizializzarlo ogni volta che creo un oggetto CContainer.
Dove sto sbagliando??
Spero di essere stato abbastanza chiaro nell'esposizione.
Grazie,
Mirko

 meno...).
Penso che CContainer non dovrebbe avere riferimenti a CConf. L'accesso 
ai dati di CContainer dovrebbe avvenire sempre tramite metodi di CConf.
E.

 meno...).
Dipende un po' anche da altri fattori, tipo il momento esatto in cui il 
container ti serva sia creato.
Potresti anche pensare, in generale, di mettere privato il membro 
container, esporre un GetContainer() e che questo venga inizializzato al 
la sua prima chiamata, qualora non già inizializzato.
In ogni caso probabilmente l'errore è nel volere il riferimento al CRef 
nel container...
ciao
Newsgroup: it.comp.lang.c++
Titolo: Compilatore C++ free

Ciao,
rinnovo la mia richiesta fatta in un post precedente:vorrei usare un
compilatore C++ non visuale,o meglio spartano il piů possibile,in modo da
imparare il C++ senza aiuto da parte dell'ambiente di sviluppo.Potreste
consigliarmene uno?Ho sentito parlare di djgpp e in rete io ho trovato lcc.

 consigliarmene uno?Ho sentito parlare di djgpp e in rete io ho trovato lcc.
DJGPP mi pare funzioni solo via dos. Lcc non lo conosco, l'ho solo
sentito dire.
Usa mingw (
http://www.mingw.org/
) ad esempio.
Se poi vuoi anche un IDE, allora vai per DevCpp
(
http://www.bloodshed.net/devcpp.html
) che e' una IDE + mingw.
Altrimenti Visual C++ 2005 express e' gratis
(
http://msdn.microsoft.com/vstudio/express/visualc/
).
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Olmo ha scritto:
Lcc se non ricordo male č un compilatore C, non  C++. Ha perň un 
bell'ambiente per lavorare con le api di windows.
Come compilatore C++ io fossi in te mi orienterei su 2 scelte ....
www.mingw.org
 che č un porting di gcc per windows oppure gcc all'interno 
di cygwin (non uccidetemi ma io lo definirei un emulatore *unix per 
windows ... )
ciao
Pier Paolo


Olmo ha scritto:

mingw (porting del gcc), oppure ti installi visual c++ express edition e 
usi il compilatore a riga di comando...

 usi il compilatore a riga di comando...
Ok,grazie a tutti per i consigli (e faccio mea culpa per non aver letto
prima le faq.....)