【发布时间】:2015-12-16 21:38:50
【问题描述】:
我有一个 Windows 运行时组件,其中我的所有类都需要在内部公开句柄:
private interface class IHandleContainer {
IntPtr GetHandle();
}
namespace Foo {
public ref class Bar: IHandleContainer { ... }
public ref class Baz: IHandleContainer {
internal:
virtual IntPtr GetHandle() = IHandleContainer::GetHandle;
}
}
我不需要公开 IHandleContainer,但我确实需要 IHandleContainer 出现在接口列表中,这样我的每个内部对象都可以成功safe_cast<IHandleContainer>。
在命名空间之外,IHandleContainer 不应该被发送到元数据,但应该有一个与之关联的 COM GUID,并且通过在 ref 类的接口列表中列出它,CX 应该能够连接正确的响应查询接口。从结构上讲,一切都应该“正常工作”。但是编译器不配合:
error C3991: 'Foo::Baz': cannot implement a non-public or nested interface 'IHandleContainer'
【问题讨论】:
标签: windows-runtime c++-cx winrt-component