Questa è una classe C++ che ho creato con n numero di puntatori.facendo numerosi puntatori NULL allo stesso tempo
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
Durante la fase di inizializzazione, Voglio fare tutte quelle puntatori punto a NULL (o fare puntatori punto a NULL per impostazione predefinita quando sono dichiarate), piuttosto che farlo:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
C'è qualsiasi metodo facile per raggiungere questo obiettivo? Mi sto solo chiedendo se ci sono modi per evitare di digitare n righe di ptr = NULL; nella mia funzione. Grazie in anticipo.
AGGIUNTO sulla base delle risposte che ho ricevuto finora: Purtroppo, questi puntatori devono essere separati, in quanto sono utilizzati per scopi diversi. Ho fatto i nomi dei puntatori in quanto tali solo per capire cosa sto cercando di fare, ma ogni puntatore ha uno scopo completamente diverso. Credo che dovrei farli puntare a NULL come ho già fatto. Grazie per le tue risposte.
Si noti che se la classe non ha un costruttore dichiarato dall'utente, SomeClass() avrà tutti i puntatori zero. Ciò significa che puoi semplicemente fare * this = SomeClass(); e farebbe puntare tutti i puntatori a zero. –
@litb, nei miei test, solo le istanze statiche di SomeClass hanno azzerato tutti i puntatori; le istanze automatiche e di heap ottengono tutto ciò che si trova nella pila o nell'heap. –
supponendo che non ci sia un costruttore dichiarato dall'utente, quindi SomeClass() è inizializzato in contrapposizione a "a" in {SomeClass a; }. Il valore SomeClass() inizializza, in modo ricorsivo, tutti i suoi membri. Ciò renderà qualsiasi membro del puntatore ai puntatori nulli. Se si definisce una variabile automatica e non ha un costruttore dichiarato dall'utente, non viene inizializzata. Dovresti fare per esempio {SomeClass a = SomeClass(); } –