另一个:从"常量类型*"到"类型*"的转换无效

yet another: invalid conversion from 'const type*' to 'type*'

本文关键字:类型 转换 无效 常量 另一个      更新时间:2023-10-16

就这么简单:我想指定函数不会更改其指针参数。如何?

class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);

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

好的,您已经澄清了您不打算将恒常性添加到点,而是添加到指针(当然,在复制指针时可以安全地删除这一点(。错误消息很好地表明您未能实现该目标。

要执行此操作的类型是:

int* const

请记住,const直接应用于左侧(除非那里没有任何东西,在这种情况下,它直接应用于右侧(。

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