在C ++托管中实现'const'接口方法

时间:2013-11-04 15:59:04

标签: c# managed-c++

我需要在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;
};

1 个答案:

答案 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;
    }
};