非常简单:我想指定一个函数不会改变它的指针参数。如何?又一个:C++ - 从'const type *'无效转换为'type *'
class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);
仍然没有工作,感谢您的帮助!
非常简单:我想指定一个函数不会改变它的指针参数。如何?又一个:C++ - 从'const type *'无效转换为'type *'
class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);
仍然没有工作,感谢您的帮助!
好的,你已经澄清,你没有打算增加const到指针,而是指向(而这当然可以安全地删除时复制指针)。错误消息很好地表明您在该目标中失败。
的类型做的是:
int* const
记住,const
直接适用于左侧(除非有什么也没有,在这种情况下,直接适用于右侧)。
您正在传递'foo()'常量指针,这意味着您告诉编译器您不希望任何人更改指针所指向的数据。因此,将const指针转换为非const指针是没有意义的。然而,如果你真的想这样做'只是为了好玩',那么你可以通过'memcpy'来解决这个问题。
'memcpy'会是一个奇怪的方法。 'const_cast'肯定 –
你正在接受'const int *'参数并试图将它保存在一个非''constst'变量中。错误信息正试图向您解释,请花点时间仔细阅读。 – tadman
是的,你说函数*本身*不会修改'q'指向的东西。但是,然后将它保存在一个非常量指针中,以便其他*成员函数可以修改数据。 –
'A = a;'这是什么?你对细节的关注度很低。 –