导出/定义静态模板专用成员变量C++
Exporting/Defining Static Template Specialized Member Variable C++
所以我目前正在导出一个DLL,遇到了一个问题,我有一个包含静态char*[]成员变量的模板类。我想为该模板的专业化定义这个。
示例:
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静态数据成员
是否没有方法定义模板的静态数据成员并将其导出进入DLL??
好的,所以我已经意识到我实际上可以在实现文件中初始化静态模板变量。我还意识到,我不应该将导出或导入宏附加到头文件中定义的模板函数。
DONT DO THIS:
template <typename T>
MY_API void foo()
{
cout << "This won't link, don't try it << endl
}
意识到一旦MY_API被定义为,上面就有一个非常糟糕的问题
__declspec(dllimport)
相关文章:
- 静态数据成员模板专用化的实例化点在哪里
- 成员变量如何使用专用类模板?
- GCC 7 中模板类的模板成员函数的专用化
- C++ 类模板部分专用化,而不专用化所有成员函数
- 专用于可变参数模板成员函数
- 对专用模板成员的未定义引用
- 对类模板成员的显式专用化的约束
- 具有专用成员函数的默认模板参数
- 如何正确地显式实例化具有完全专用成员的模板类
- C++模板类中的非专用成员
- 运算符<<重载时无法访问专用成员(指定指针)
- 避免强制转换以访问派生类的专用成员
- 枚举类型参数的专用成员模板
- 组织专用成员 Vector<Vector 接口的最佳方式<Type>>
- 基于基类的专用成员函数
- C++模板:专用成员函数,用于解决主模板中不明确的重载情况
- 导出/定义静态模板专用成员变量C++
- 无法访问QXmlStreamReader的专用成员(运算符=)
- 类专用成员-数组访问失败
- C++中非模板类的专用成员函数