To jest klasa C++, którą zrobiłem z n liczbą wskaźników.robienie licznych wskaźników NULL w tym samym czasie
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
Podczas fazy inicjalizacji, chcę, aby wszystkie te wskaźniki wskaż polecenie NULL (lub uczynić wskaźniki wskaż polecenie NULL domyślnie, gdy są one zadeklarowanej) zamiast tego:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
Czy istnieje jakąkolwiek łatwą metodę osiągnięcia tego celu? Zastanawiam się, czy istnieją sposoby uniknięcia wpisywania n linii ptr = NULL; w mojej funkcji. Z góry dziękuję.
DODANO oparty na odpowiedziach, że otrzymałem dotąd: Niestety, te wskaźniki muszą być oddzielone, jak są one wykorzystywane do różnych celów. Zrobiłem nazwy wskaźników jako takie tylko po to, aby ustalić, co próbuję zrobić, ale każda z nich ma zupełnie inny cel. Sądzę, że musiałbym sprawić, by wskazywały na NULL, jak już zrobiłem. Dziękuję za odpowiedzi.
Należy zauważyć, że jeśli klasa nie ma konstruktora deklarującego użytkownika, SomeClass() będzie mieć wszystkie wskaźniki zerowe. Oznacza to, że możesz po prostu zrobić * this = SomeClass(); i uczyniłoby wszystkie wskaźniki wskaźnikami zerowymi. –
@litb, w moich testach tylko statyczne instancje SomeClass mają wyzerowane wszystkie wskaźniki; automatyczne i sterty instancji pobierają wszystko, co leży w stosie lub sterty. –
przy założeniu, że nie ma konstruktora deklarowanego przez użytkownika, wówczas SomeClass() jest inicjowany w przeciwieństwie do "a" w {SomeClass a; }. Wartość SomeClass() - inicjuje, rekurencyjnie, wszystkie jego elementy. Spowoduje to, że dowolne elementy wskaźnika będą miały wartości zerowe. Jeśli zdefiniujesz zmienną automatyczną i nie ma ona deklarowanego konstruktora, nie zostanie ona zainicjalizowana. Musiałbyś zrobić na przykład {SomeClass a = SomeClass(); } –