为什么我的静态成员函数不能跨程序集识别?
我有一个辅助程序集,其中包含一个识别对象类型的函数:
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 使用泛型有关吗?
I have a helper assembly which includes a function to identify object types:
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;}
};
}
...but for some reason, when I try and use it in a gui application which references the assembly:
Util::CastingHelpers::Test();
Util::CastingHelpers::isinst<SomeClass^>(someInstance);
..gives me an error:
2>.\DataProcessor.cpp(161) : error C2039: 'isinst' : is not a member of 'Util::CastingHelpers'
Note that test works fine. Is this something to do with the fact that isinst uses generics?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不是在创建通用函数,而是在创建不从程序集中导出的 C++ 模板函数。
使用关键字
generic
而不是template
创建 .NET 泛型类型和方法。模板方法仅对 #include 其声明的代码可见。
You are not creating a generic function, you are creating a C++ template function which is not exported from the assembly.
Use the keyword
generic
instead oftemplate
to create .NET generic types and methods.The template method is only visible by code that #includes its declaration.