In una classe del linguaggio C++ non può essere definito un campo che sia una istanza della classe, ma un puntatore a un oggetto della classe stessa si! Per quale motivo?
In una classe del linguaggio C++ non può essere definito un campo che sia una istanza della classe, ma un puntatore a un oggetto della classe stessa si! Per quale motivo?
La curiosità è la fonte della conoscenza.
Nemmeno in una struct del C se è per quello. Nella seconda edizione di "Linguaggio C" gli autori liquidano la cosa in tre parole. Non è permesso.
Il C++ riprende semplicemente il concetto.
non hai risposto alla domanda
La curiosità è la fonte della conoscenza.
Guarda che questa limitazione non esiste, come ti dimostra questo esempio.
codice:#include <iostream> class test { public: int dummy; test() { dummy=10; std::cout<<"Nel costruttore senza parametri di 'test'"<<std::endl; }; test(int Dummy) { dummy=Dummy; std::cout<<"Nel costruttore parametrizzato di 'test'; dummy="<<dummy<<std::endl; }; }; class test2 { public: test testInstance; test2() { std::cout<<"Nel costruttore senza parametri di 'test2'"<<std::endl; }; test2(int DummyValue) : testInstance(DummyValue) { std::cout<<"Nel costruttore parametrizzato di 'test2'; DummyValue="<<DummyValue<<std::endl; }; }; int main() { test2 t2_1; test2 t2_2(50); std::cin.sync(); std::cin.ignore(); return 0; }
Amaro C++, il gusto pieno dell'undefined behavior.
non hai capito la domanda, in cui P4nico si chiede perché non sia possibile fare robe del genere:Originariamente inviato da MItaly
Guarda che questa limitazione non esiste
;-)Codice PHP:
class CTest{
CTest fTest; // Non può essere compilato;
CTest * fTestPtr; // ok
};
Ops...Be', perché altrimenti quella classe occuperebbe spazio infinito, visto che ogni istanza della classe ne conterrebbe un'altra che ne conterrebbe un'altra ancora e così via. Invece con un puntatore questo problema non si pone: può essere impostato a NULL, può puntare a this, può creare dei "puntamenti" circolari (il puntatore dell'istanza A punta all'istanza B, il cui puntatore punta a C, il cui puntatore punta a D, il cui puntatore punta ad A), ..., e in ogni caso il problema è delegato al programmatore, che si arrangia come meglio crede.
Amaro C++, il gusto pieno dell'undefined behavior.
Ora che hai capito cosa indendevo mi hai dato davvero 1 ottima risposta, ti ringrazio.Originariamente inviato da MItaly
Ops...Be', perché altrimenti quella classe occuperebbe spazio infinito, visto che ogni istanza della classe ne conterrebbe un'altra che ne conterrebbe un'altra ancora e così via. Invece con un puntatore questo problema non si pone: può essere impostato a NULL, può puntare a this, può creare dei "puntamenti" circolari (il puntatore dell'istanza A punta all'istanza B, il cui puntatore punta a C, il cui puntatore punta a D, il cui puntatore punta ad A), ..., e in ogni caso il problema è delegato al programmatore, che si arrangia come meglio crede.
La curiosità è la fonte della conoscenza.
Prego, ciao!![]()
Amaro C++, il gusto pieno dell'undefined behavior.