2012-07-25 44 views
0

在使用Visual Studio 2008的本机C++中,如何将接口传递给使用const的类成员?执行以下操作导致此错误:C++如何使用const将接口传递给Class方法

错误C2662:“IMyInterface的:: PublicMember1”不能转换从“常量IMyInterface的”这个'指针“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(); 
} 

回答

10

声明的接口所需的方法作为const

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

谢谢,这是一个超级快速的答案,比我能编辑我在原始文章中犯的错误要快。 ;-) – JohnCambell 2012-07-25 11:41:02

相关问题