为什么不在程序集中识别我的静态成员函数?

时间:2010-03-10 10:36:50

标签: import assemblies c++-cli generics

我有一个帮助程序集,其中包含一个识别对象类型的函数:

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使用泛型的事实有关吗?

1 个答案:

答案 0 :(得分:1)

您没有创建通用函数,您正在创建一个不从程序集导出的C ++模板函数。

使用关键字generic代替template来创建.NET泛型类型和方法。

模板方法仅在#includes其声明的代码中可见。