c++ - 同时使多个指针为 NULL

标签 c++ pointers

这是我用 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/

相关文章:

c - 在树结构中加载字典并卸载它的问题 - C 编程

c - 如何打印大小未知的int数组

c++ - VS 2015编译cocos2d-x 3.3报错 "fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration"

c++ - Open gl es - 如何提高性能、渲染到纹理、混合

c++ - vector/数组问题,无法将索引分配给变量/无法将变量用作数组大小(索引)C++

c++ - 将指针转换为其他指针

pointers - 模仿 Rust 中的克隆特性

c - C 中空指针的自由数组

c++ - 当 GUI 线程在 Qt 中空闲时发出信号?

c++ - 目标文件是为比链接更新的 OSX 版本构建的