这是我用 n 个指针创建的 C++ 类。
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
在初始化阶段,我想让所有这些指针都指向 NULL(或者在声明时让指针默认指向 NULL)而不是这样做:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
有什么简单的方法可以实现这个目标吗?我只是想知道是否有任何方法可以避免输入 n 行 ptr = NULL;在我的职能中。提前致谢。
ADDED 根据我目前收到的答案: 不幸的是,这些指针必须分开,因为它们用于不同的目的。我这样命名指针只是为了说明我正在尝试做的事情,但每个指针都有完全不同的目的。我想我必须像我已经做的那样让它们指向 NULL。感谢您的回答。
最佳答案
而不是 int *
, 创建一个类似于 int *
的类似智能指针的类,但默认构造为 NULL:
template <typename T>
class MyPointer {
T *p;
public:
MyPointer() : p(NULL) { }
MyPointer(T *o) : p(o) { }
operator T*() const { return p; }
// ...and the rest of the traditional smart-pointer operators
};
然后,在你的类里面使用它:
class SomeClass
{
private:
MyPointer<int> ptr1;
MyPointer<int> ptr2;
...
MyPointer<int> ptrn;
private:
// constructors, destructors, and methods
};
MyPointer<int>
的每个变量类型将在 SomeClass
中自动正确初始化的构造函数,无需任何额外的输入。如果您没有忘记或错误地实现任何 MyPointer
的方法,它将完全像一个普通指针,并且具有完全相同的大小和性能。
关于c++ - 同时使多个指针为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1020443/