例如代码:
A* pA = new A;
我需要在编译阶段避免指针递增/递减运算符:
pA++; // MUST failed during compilation phase
答案 0 :(得分:2)
您可以将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
}
答案 1 :(得分:1)
这是不可能的。
因为我想你想这样做是为了避免意外错误,我猜智能(屁股)解决方案不适用(包括发明一些类似指针的包装类等),因为它们会增加错误的概率:)
答案 2 :(得分:1)
如果你想坚持原始指针,这是不可能的。
您需要使用不实现该运算符的类(也称为智能指针)来包装它。