View Full Version : [.net] Rilevare dangling object
_Claudio
29-09-2009, 22:35
Come da titolo, voglio rilevare se un oggetto
System:: Drawing::Graphics^
è stato inizializzato o meno.
In questo caso ho un oggetto di questo tipo, ma in generale come si può rilevare se un oggetto gestito è stato inizializzato o meno?
Poi un'altra domanda che non centra nulla:
come è possibile fare l'overload dell'operatore = senza creare le relative getters e copiare membro a membro da un oggetto all'altro?
Se io ho una classe reticolo e creo:
reticolo a;
reticolo b = reticolo(x, y, z);
e faccio:
a = b;
devo definire:
reticolo^ operator=(reticolo r) {
this->a = r.geta();
this->b = r.getb();
this->c = r.getc();
return this;
}
Non c'è un modo più semplice?
tomminno
29-09-2009, 23:22
Come da titolo, voglio rilevare se un oggetto
System:: Drawing::Graphics^
è stato inizializzato o meno.
In questo caso ho un oggetto di questo tipo, ma in generale come si può rilevare se un oggetto gestito è stato inizializzato o meno?
Mi sembra di capire che stai facendo riferimento al C++/CLI.
Non ti basta verificare se l'oggetto è != nullptr?
Poi un'altra domanda che non centra nulla:
come è possibile fare l'overload dell'operatore = senza creare le relative getters e copiare membro a membro da un oggetto all'altro?
Se io ho una classe reticolo e creo:
reticolo a;
reticolo b = reticolo(x, y, z);
e faccio:
a = b;
devo definire:
reticolo^ operator=(reticolo r) {
this->a = r.geta();
this->b = r.getb();
this->c = r.getc();
return this;
}
Non c'è un modo più semplice?
Wow qui stai un pò mischiando C++ e C++/CLI, definisci l'operatore copia come se fossi in C++ ma gli fai ritornare una reference .NET.
Perchè non usare esclusivamente reference .NET?
reticolo^ a = nullptr;
reticolo^ b = gcnew reticolo(x, y, z);
a = b;
_Claudio
29-09-2009, 23:55
Mi sembra di capire che stai facendo riferimento al C++/CLI.
Non ti basta verificare se l'oggetto è != nullptr?
Wow qui stai un pò mischiando C++ e C++/CLI, definisci l'operatore copia come se fossi in C++ ma gli fai ritornare una reference .NET.
Perchè non usare esclusivamente reference .NET?
reticolo^ a = nullptr;
reticolo^ b = gcnew reticolo(x, y, z);
a = b;
Dunque nullptr funziona... avevo bisogno della parolina magica.
Può sembrare che io mi sia ammattito ma purtroppo ho una classe gestita (C++/CLI) che accede ad un oggetto graphics e mi gestisce il disegno in base a vari parametri.
Mi sono ammazzato scrivendo l'overload dell'operatore = e costruttori copia quando invece mi ero solo dimenticato un ^ nella definizione... mi sembrava strano che mi vedeva l'oggetto intero e non come riferimento, mannaggia a me, un intero pomeriggio perso così.
Non capisco se questo sia il bello o il brutto del realizzare un software.
Comunque grazie 1000, la ruggine inizia a scrostarsi piano piano, anni di Java e programmazione sul web sono deleteri rispetto alla gestione diretta di TUTTO che si fa con C++.
tomminno
30-09-2009, 00:56
Comunque grazie 1000, la ruggine inizia a scrostarsi piano piano, anni di Java e programmazione sul web sono deleteri rispetto alla gestione diretta di TUTTO che si fa con C++.
Di niente ma...
quello lì NON E' C++.
E' C++/CLI che a dispetto del nome ha poco a che spartire con il vero C++.
_Claudio
30-09-2009, 09:48
Di niente ma...
quello lì NON E' C++.
E' C++/CLI che a dispetto del nome ha poco a che spartire con il vero C++.
Lo so, e maledico il giorno che la microsoft ha deciso di tradurre tutto in CLI cambiando notazioni e quant'altro... potevano lasciare almeno la sintassi uguale al C++... troppo semplice.
Il programma che sto facendo ha le classi base in C++ puro, e l'interfaccia Windows Forms in C++/CLI, e quando devo integrare pani e pesci sono sempre testate al muro.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.