2013-11-04 44 views
0

我需要實現的C++接口在C++託管:實施「常量」接口方法管理

class MyInterface 
{ 
    virtual int Get() const = 0; 
}; 

我如何能實現與C「常量」法++與從C#中導入實施能力管理這個接口(單元測試它?

在這一點上我有PIMPL實施管理,它實現原始方法(不接口)具有相同的簽名,但沒有'const'。在我的高層次實現我' m使用'const_cast'我不喜歡這種方式,它甚至不能工作:

class MyImplementation: public MyInterface 
{ 
    public: 
     /*virtual*/ int Get() const 
     { 
      return const_cast<??>(??_impl).call(); 
     } 
    private: 
     msclr::gcroot<MyImplementationImpl> _impl; 
}; 
+2

你說的要求。你的問題是什麼? –

+0

確保你的問題在某個地方包含'?'符號... –

+2

它不是一個託管界面。你不能用託管類來實現它。 –

回答

0

我停在一個這樣的解決方案:

class IInterface 
{ 
public: 
    virtual int Get() const = 0; 
}; 

class Implementation : IInterface 
{ 
public: 
    virtual int Get() const 
    { 
     return const_cast<ManagedImplementation^>(_impl.get())->Get(); 
    } 

private: 
    mutable msclr::auto_gcroot<ManagedImplementation^> _impl; 
}; 

public ref class ManagedImplementation 
{ 
public: 
    int Get() 
    { 
     return 0; 
    } 
};