编译器错误 C2158

“type”: 目前只有本机非模板类型才支持 #pragma make_public 指令

make_public 杂注只能应用于本机非模板类型。

示例

下面的示例生成 C2158。

// C2158.cpp
// compile with: /clr /c
ref class A {};
#pragma make_public(A)   // C2158

template< typename T >
class B {};
#pragma make_public(B)   // C2158
#pragma make_public(B<int>)   // C2158

void C () {}
#pragma make_public(C)   // C2158

class D {};
#pragma make_public(D)   // OK