繁体   English   中英

导出/定义静态模板专用成员变量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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM