Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-05-2007, 01:01   #1
bianchis78
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 17
[C++] Già che ci sono...

... vi chiedo un ulteriore aiuto...

Stò facendo un progetto e mi sono imbattuto in un errore che non riesco a risolvere, forse ho sbagliato a inserire o meno delle dichiarazioni, non so...

Ho scritto due righe che simulano il mio problema, se qualcuno fosse così gentile da dirmi gli errori che ho commesso gline sarei immensamente grato..
Allegati
File Type: zip Prova.zip (1.6 KB, 3 visite)

Ultima modifica di bianchis78 : 21-05-2007 alle 01:05.
bianchis78 è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 08:26   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da bianchis78 Guarda i messaggi
... vi chiedo un ulteriore aiuto...

Stò facendo un progetto e mi sono imbattuto in un errore che non riesco a risolvere, forse ho sbagliato a inserire o meno delle dichiarazioni, non so...

Ho scritto due righe che simulano il mio problema, se qualcuno fosse così gentile da dirmi gli errori che ho commesso gline sarei immensamente grato..
Due cose ho notato:

A)
(*MyAClass).Init();
più semplicemente:
MyAClass->Init();

B)
Codice:
ClasseA::ClasseA()
{
	ClasseB *BClass = new ClasseB();
}
Così la istanza di ClasseB la assegni ad una variabile locale (che quindi lì nel costruttore non serve a nulla) invece che alla variabile di istanza private BClass dichiarata nella ClasseA.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:07   #3
bianchis78
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 17
Ok per il primo errore...
cmq una curiosità l'operatore -> e l'operatore . non sono intercambiabili?
per il secondo.. ho scritto cosi perchè come variabile nel private avevo messo il puntatote ClasseB *ClassB; è sbagliato? come avrei dovuto fare ?
bianchis78 è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:19   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da bianchis78 Guarda i messaggi
Ok per il primo errore...
cmq una curiosità l'operatore -> e l'operatore . non sono intercambiabili?
Beh, non è un errore. Il '.' lo si usa quando si accede ad una classe/struttura/union senza passare per un puntatore, il '->' lo si usa per la stessa cosa ma quando si ha un puntatore.

Difatti MyAClass->Init() fa la stessa identica cosa che (*MyAClass).Init(). Avendo un puntatore lo si deve dereferenziare, con -> lo fa già lui, altrimenti lo devi fare tu con (*MyAClass). Ma il succo non cambia.

Quote:
Originariamente inviato da bianchis78 Guarda i messaggi
per il secondo.. ho scritto cosi perchè come variabile nel private avevo messo il puntatote ClasseB *ClassB; è sbagliato? come avrei dovuto fare ?
Appunto:
Codice:
ClasseA::ClasseA()
{
    BClass = new ClasseB();   // assegno a BClass, che è il membro private
}
Come hai fatto tu assegni il puntatore alla istanza ad una variabile locale nel costruttore. Appena il costruttore termina il puntatore è "perso".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:26   #5
bianchis78
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 17
Scusa ma sono proprio fuori...

Allora se quando viene istanziata una classe A che si appoggia ad una istanza della classe B, come faccio a tenere un riferimento per quando chiamo i vari metodi della classe A, per dirgli che devono usare l'istanza di B che ho creato? scusa ma come avrai capito sono ancora alle prime armi...
bianchis78 è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:51   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da bianchis78 Guarda i messaggi
Scusa ma sono proprio fuori...

Allora se quando viene istanziata una classe A che si appoggia ad una istanza della classe B, come faccio a tenere un riferimento per quando chiamo i vari metodi della classe A, per dirgli che devono usare l'istanza di B che ho creato? scusa ma come avrai capito sono ancora alle prime armi...
Ma nella ClasseA hai messo un membro private ClasseB *BClass. Nel costruttore inizializzi quel membro come ho appena detto prima. A quel punto le altre funzioni membro possono usare tranquillamente BClass.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 10:21   #7
bianchis78
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 17
THKS!!

Ok adesso ci sono.

Scusa se te l'ho fatto ripetere due volte, ma sto un pò fuso in questi giorni.

Grazie 1000 di nuovo!!
bianchis78 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v