0

Visual Studio2008を使用するネイティブC++で、constを使用してクラスメンバーにインターフェイスを渡すにはどうすればよいですか?次の手順を実行すると、このエラーが発生しました。

エラーC2662:'IMyInterface::PublicMember1'は'this'ポインタを'constIMyInterface'から'IMyInterface&'に変換できません

class IMyInterface
{
  virtual std::wstring PublicMember1() = 0;
  virtual int PublicMember2() = 0;
  virtual void Update(const IMyInterface & myObject) = 0;
}

class MyClass : public IMyInterface
{
   private:
      std::wstring privateMember1;
      int privateMember2;
   public:
      virtual std::wstring PublicMember1() { return privateMember1; }
      virtual int PublicMember2() { return privateMember2; }
      virtual void Update(const IMyInterface & myObject);
}

void MyClass::Update(const IMyInterface& myObject)
{
     privateMember1 = myObject.PublicMember1();
     privateMember2 = myObject.PublicMember2();
}
4

1 に答える 1

10

インターフェイスの必要なメソッドを次のように宣言します。const

class IMyInterface
{
  virtual std::wstring PublicMember1() const = 0;
  virtual int PublicMember2() const = 0;
  virtual void Update(const IMyInterface & myObject) = 0;
}
于 2012-07-25T11:28:56.820 に答える