这很简单:我想指定一个函数不会改变它的指针参数。怎么样?
class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);
仍然无法正常工作,感谢您的帮助!
答案 0 :(得分:1)
好的,你澄清说你没有打算将constness添加到指针对象,而是指向指针(当然,复制指针时可以安全地删除它)。错误消息很好地表明您未能实现该目标。
要做的是:
int* const
请记住,const
直接适用于左边(除非那里没有任何内容,在这种情况下它直接适用于右边)。
答案 1 :(得分:0)
你正在传递'foo()'一个const指针,这意味着你告诉编译器你不希望任何人改变指针所引用的数据。因此,将const指针转换为非const指针是没有意义的。但是,如果你真的想“只是为了好玩”,那么你可以通过“memcpy”解决这个问题。