例如代码:禁止类指针递增/递减运算
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;
这使得帕常量指针,指向一个目的。初始化后指针不能改变,但其内容可以。
比较
const A *pA = new A;
这是一个指向一个const目的。
如果你想迭代一个A对象的数组,获得一个单独的指针。
A * const pAs = new A[size];
for (A * iter = pAs; iter < pAs+size; ++iter)
{
// do stuff
}
这会吸引'strlen()`的实现,这很可能是内联函数,并且包含在大多数要编译的文件中。 – MSalters 2010-11-25 16:13:02
@MSalters OP只询问指向A的指针,反正也没有提供strlen(A *)。 – Simone 2010-11-25 16:15:09