这是一个C++类,我用n个指针做了.
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
Run Code Online (Sandbox Code Playgroud)
在初始化阶段,我想让所有那些指针指向NULL(或者在声明时默认指针指向NULL)而不是这样做:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来实现这个目标?我只是想知道是否有任何方法可以避免输入n行ptr = NULL; 在我的功能.提前致谢.
根据我到目前为止收到的答案添加:不幸的是,这些指针必须分开,因为它们用于不同的目的.我将指针的名称作为这样只是为了说明我正在尝试做的事情,但每个指针都有一个完全不同的目的.我想我必须让它们指向NULL,因为我已经完成了.谢谢你的回答.
Ces*_*arB 11
而不是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
};
Run Code Online (Sandbox Code Playgroud)
然后,在你的课堂上使用它:
class SomeClass
{
private:
MyPointer<int> ptr1;
MyPointer<int> ptr2;
...
MyPointer<int> ptrn;
private:
// constructors, destructors, and methods
};
Run Code Online (Sandbox Code Playgroud)
该MyPointer<int>类型的每个变量都将在SomeClass构造函数中自动初始化,无需任何额外的输入.如果您没有忘记或错误地实现任何MyPointer方法,它将完全像普通指针一样,并具有完全相同的大小和性能.
你可以这样做:
void SomeClass::MakePtrNull()
{
ptr1 = ptr2 = ptr3 = ... = ptrn = NULL;
}
Run Code Online (Sandbox Code Playgroud)