0
所以我目前正在导出一个DLL,我遇到了一个问题,我有一个包含静态char * []成员变量的模板类。我想为这个模板的专门化定义这个。导出/定义静态模板专门的成员变量C++
例如:
MyTemplate.h
#include <dll_defines.h>
template <typename T>
class MY_API MyTemplate
{
public:
static char const* m_array[];
}
MySpecializedTemplate.h
#include <dll_defines.h>
#include <MyTemplate.h>
class MY_API Specialized; //pretend its more than just a decl.
template <> char const* MyTemplate<Specialized>::m_array[] =
{
"Hello, World",
"I need help"
};
我遇到的问题是,当我试图在另一个项目中链接DLL,它给了我一个错误说明:
定义dllimport static da ta成员不允许
是否没有办法定义模板的静态数据成员并将其导出到DLL?
你用什么编译器?为什么在头文件中定义静态数据成员? – Constructor 2014-10-10 04:24:32
我正在使用visual studio,所以MSVC。此外,模板必须从我所理解的头文件中定义。我认为模板类中包含的静态数据成员也需要。通常,类的静态数据成员在定义中被初始化为.cpp文件,但我不确定自该模板以来该怎么做。 – 2014-10-10 04:29:13
显式专业化实际上不是模板。所以他们应该只在头文件中声明。 – Constructor 2014-10-10 07:02:47