C++ 导出带有模板基类的派生类,并且模板参数本身是派生的

C++ 导出带有模板基类的派生类,并且模板参数本身是派生的,c++,templates,dynamic-linking,dllexport,C++,Templates,Dynamic Linking,Dllexport,我有一个简短的问题,希望有人知道我所尝试的是否可行 假设我有一个这样的模板基类 template <class T> class CBase { public: CBase() {} void print() { std::cout << n std::endl; } private: T m_var; }; 模板 C类数据库 { 公众: CBase(){} void print(){std::在构建库时,您是

我有一个简短的问题,希望有人知道我所尝试的是否可行

假设我有一个这样的模板基类

template <class T> 
class CBase
{
    public: 
        CBase() {}
        void print() { std::cout << n std::endl; }
    private:
    T m_var;
};
模板
C类数据库
{
公众:
CBase(){}

void print(){std::在构建库时,您是否可以包含您的CDerived头(在翻译单元中)?有一个解决方案,我确实包含了它是的。我知道导出模板子类的一般解决方案,但这是一个特殊情况,在这里也有描述(最后一节)但是,如果可能的话,我并没有真正从文本中得到答案。因此,您在头文件中没有实现
CBase
定义。模板类必须在头文件中实现。请尝试仅使用.H文件
class CDerived : public CBase<CDerived>
{
    public: 
        CDerived () {}
};
#if defined(BUILD_LIBRARY)
#  define EXPORT __declspec(dllexport)
#else
#  define EXPORT __declspec(dllimport)
#endif

class EXPORT CDerived : public CBase<CDerived>
{
    public: 
        CDerived () {}
};