我需要在C ++ managed:
中实现C ++接口class MyInterface
{
virtual int Get() const = 0;
};
如何在C ++中使用'const'方法实现此接口,并且能够从C#类库中导入实现(以进行单元测试?
此时我有针对托管的PIMPL实现,它实现了具有相同签名的原始方法(不是接口),但没有'const'。在我的高级实现中,我正在使用'const_cast'。我不喜欢这种方式,它甚至不起作用:
class MyImplementation: public MyInterface
{
public:
/*virtual*/ int Get() const
{
return const_cast<??>(??_impl).call();
}
private:
msclr::gcroot<MyImplementationImpl> _impl;
};
答案 0 :(得分: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;
}
};