指针问题将其作为常量发送

时间:2013-03-15 12:04:28

标签: c++ pointers const

我用c ++工作了一段时间,我怀疑在函数中发送指针作为参数。

我想向一个函数发送一个对象指针但是有一个const状态,以便知道指针所指向的对象不会随时被修改。所以我这样做了:

int hi(const SomeObject* so)
{
    so->SayHi();
}

SomeObject* so = new SomeObject();
hi(so);

但它没有用。它说不兼容的类型......

另外,如果我也将const添加到函数中会有所不同吗?像:

int hi(const SomeObject* so) const;

任何人都可以向我解释这个疑问吗?感谢

1 个答案:

答案 0 :(得分:3)

int hi(const SomeObject* so)

您已将SomeObject声明为常量。如果sayHi也未声明为const,则会导致编译器错误。

class SomeObject {
  void sayHi(void) const;
}

如果你的意图是使指针不变(不是指向它的对象),它应该是这样的:

int hi(SomeObject* const so)

Here你可以阅读指针和常量指针