我有一个帮助程序集,其中包含一个识别对象类型的函数:
namespace Util
{
using namespace System;
public ref class CastingHelpers
{
public:
template < class T, class U >
static System::Boolean isinst(U u);
static bool Test() {return true;}
};
}
...但出于某种原因,当我尝试在引用程序集的gui应用程序中使用它时:
Util::CastingHelpers::Test();
Util::CastingHelpers::isinst<SomeClass^>(someInstance);
..给了我一个错误:
2>.\DataProcessor.cpp(161) : error C2039: 'isinst' : is not a member of 'Util::CastingHelpers'
请注意,测试工作正常。这与isinst使用泛型的事实有关吗?
答案 0 :(得分:1)
您没有创建通用函数,您正在创建一个不从程序集导出的C ++模板函数。
使用关键字generic
代替template
来创建.NET泛型类型和方法。
模板方法仅在#includes其声明的代码中可见。