0

一段时间以来,我再次使用 c++,我怀疑将指针作为函数中的参数发送。

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

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

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

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

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

int hi(const SomeObject* so) const;

谁能解释我这个疑问?谢谢

4

1 回答 1

3
int hi(const SomeObject* so)

你已经声明SomeObject是不变的。如果 sayHi 也没有声明为 const,这将导致编译器错误。

class SomeObject {
  void sayHi(void) const;
}

如果您的意图是使指针保持不变(而不是它指向的对象),它应该如下所示:

int hi(SomeObject* const so)

在这里您可以阅读有关指针和常量指针的信息

于 2013-03-15T12:09:21.953 回答