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 に答える