禁用类指针递增/递减运算符

时间:2010-11-25 16:04:50

标签: c++ pointers unary-operator

例如代码:

A* pA = new A;

我需要在编译阶段避免指针递增/递减运算符:

pA++; // MUST failed during compilation phase

3 个答案:

答案 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)

如果你想坚持原始指针,这是不可能的。

您需要使用不实现该运算符的类(也称为智能指针)来包装它。