1

例如代码:

A* pA = new A;

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

pA++; // MUST failed during compilation phase
4

3 回答 3

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
}
于 2010-11-25T17:15:08.247 回答
1

那是不可能的。

由于我猜您想这样做以避免意外错误,因此我猜智能(ass)解决方案不适用(包括发明一些类似指针的包装类等),因为它们会增加错误的可能性:)

于 2010-11-25T16:05:58.723 回答
1

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

您需要用一个不实现该运算符(又名智能指针)的类来包装它。

于 2010-11-25T16:07:53.580 回答