接口成员为什么不能使用私有类类型?
问题描述:
考虑下面的代码:接口成员为什么不能使用私有类类型?
ref class ClassA
{
};
interface class IClassA
{
void DoSomething(ClassA^ a);
};
编译此代码与Visual C++ 11开发者预览版产生以下错误:
error C3981: 'IClassA::DoSomething' cannot be emitted into metadata
如果ClassA
是公开的,代码编译没有错误。为什么代码不能编译,如果ClassA
是非公开的?
答
这是Visual Studio 11 Developer Preview中C++编译器中的一个错误。
该错误已修复,代码使用Visual Studio 11 Beta编译时没有错误。