例如代码:
A* pA = new A;
我需要在编译阶段避免指针递增/递减运算符:
pA++; // MUST failed during compilation phase
例如代码:
A* pA = new A;
我需要在编译阶段避免指针递增/递减运算符:
pA++; // MUST failed during compilation phase
您可以将 pA 声明为
A * const pA = new A;
这使得 pA 成为指向 A 对象的 const 指针。初始化后指针不能改变,但它的内容可以。
相比
const A *pA = new A;
这是一个指向 const A 对象的指针。
如果要遍历 A 对象数组,请获取一个单独的指针。
A * const pAs = new A[size];
for (A * iter = pAs; iter < pAs+size; ++iter)
{
// do stuff
}
那是不可能的。
由于我猜您想这样做以避免意外错误,因此我猜智能(ass)解决方案不适用(包括发明一些类似指针的包装类等),因为它们会增加错误的可能性:)
如果你想坚持使用原始指针,那是不可能的。
您需要用一个不实现该运算符(又名智能指针)的类来包装它。