我用c ++工作了一段时间,我怀疑在函数中发送指针作为参数。
我想向一个函数发送一个对象指针但是有一个const状态,以便知道指针所指向的对象不会随时被修改。所以我这样做了:
int hi(const SomeObject* so)
{
so->SayHi();
}
SomeObject* so = new SomeObject();
hi(so);
但它没有用。它说不兼容的类型......
另外,如果我也将const添加到函数中会有所不同吗?像:
int hi(const SomeObject* so) const;
任何人都可以向我解释这个疑问吗?感谢
答案 0 :(得分:3)
int hi(const SomeObject* so)
您已将SomeObject
声明为常量。如果sayHi也未声明为const,则会导致编译器错误。
class SomeObject {
void sayHi(void) const;
}
如果你的意图是使指针不变(不是指向它的对象),它应该是这样的:
int hi(SomeObject* const so)
Here你可以阅读指针和常量指针