我尝试写一些函数模板在这样的一个C++/CLI命名空间:函数模板++/CLI
// header file
namespace MyCLI {
namespace MyFunctions {
template <typename T>
double sum(T a, T b) {
return (double) a + b;
}
}
}
的第一个问题是,当我编译该项目为一个dll,并尝试要使用它,名称空间MyFunctions不会显示出来。我认为,正在发生的事情,因为我还没有明确的实例化我的模板,我需要的所有类型,所以我添加下面的头文件的底部:
extern template double MyCLI::MyFunctions::sum<double>(double,double);
但是,这仍然不给我访问功能sum
为double
类型。我怀疑是因为项目被编译成托管代码,这是遵循C#的规则,你不能没有类没有功能。所以下次我试图做一个类的命名空间MyCLI内,使sum
类的这样的静态成员:
// header file
namespace MyCLI {
public ref class MyFunctions
{
public:
template <typename T>
static double sum(T a, T b) {
return (double) a + b;
}
};
}
extern template double MyCLI::MyFunctions::sum<double>(double,double);
现在,当我使用汇编我可以看到在MyCLI
的MyFunctions
类,但我仍然无法访问该类的sum
函数。
如果有人能给我任何关于如何解决这个问题的指示,或者我为什么首先面对这个问题,我将非常感激。