另一个:c ++ - 来自' const类型的无效转换*'到'键入*'

时间:2017-07-11 17:23:46

标签: c++

这很简单:我想指定一个函数不会改变它的指针参数。怎么样?

class A {
private:
  int *p;
public:
  void foo (const int *q) {
    p = q;
  }
};

A a;
int b = 3;
int *c = &b;
a.foo(c);

仍然无法正常工作,感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

好的,你澄清说你没有打算将constness添加到指针对象,而是指向指针(当然,复制指针时可以安全地删除它)。错误消息很好地表明您未能实现该目标。

要做的是:

int* const

请记住,const直接适用于左边(除非那里没有任何内容,在这种情况下它直接适用于右边)。

答案 1 :(得分:0)

你正在传递'foo()'一个const指针,这意味着你告诉编译器你不希望任何人改变指针所引用的数据。因此,将const指针转换为非const指针是没有意义的。但是,如果你真的想“只是为了好玩”,那么你可以通过“memcpy”解决这个问题。