0

我需要在 C++ 托管中实现 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;
};
4

1 回答 1

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;
    }
};
于 2013-11-05T09:56:20.387 回答