Esta es una clase de C++ que he creado con n punteros.haciendo numerosos punteros NULL al mismo tiempo
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
Durante la fase de inicialización, quiero hacer todos los punteros apuntan a NULL (o hacer punteros apuntan a NULL de forma predeterminada cuando se declaran) en lugar de hacerlo:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
¿Hay cualquier método fácil de lograr este objetivo? Me pregunto si hay alguna forma de evitar escribir n líneas de ptr = NULL; en mi función. Gracias por adelantado.
AÑADIDO basado en las respuestas que he recibido hasta ahora: Por desgracia, los punteros tienen que estar separados, ya que se utilizan para diferentes propósitos. Hice los nombres de los punteros como tal solo para hacer un punto de lo que estoy tratando de hacer, pero cada puntero tiene un propósito completamente diferente. Supongo que tendré que hacer que apunten a NULL como ya lo hice. Gracias por tus respuestas.
Tenga en cuenta que si la clase no tiene un constructor declarado por el usuario, SomeClass() tendrá todos los punteros a cero. Eso significa que puedes hacer * this = SomeClass(); y haría todos los indicadores a null-punteros. –
@litb, en mis pruebas, solo las instancias estáticas de SomeClass tienen todos los punteros puestos a cero; las instancias automáticas y de montón obtienen lo que estaba en la pila o en el montón. –
asumiendo que no hay un constructor declarado por el usuario, entonces SomeClass() se inicializa en oposición a "a" en {SomeClass a; }. SomeClass() value-initializes, recursivamente, todos sus miembros. Esto hará que los punteros sean nulos. Si define una variable automática y no tiene un constructor declarado por el usuario, no se inicializa. Tendría que hacer, por ejemplo, {SomeClass a = SomeClass(); } –