dllexport避免头文件中的模板实例化

时间:2013-04-06 15:16:29

标签: c++ templates dllexport

我有一个像以下那样编译的c ++类,直到我尝试从dll导出它为止。

MyClass.h:

class SomeClassNotDefinedHere;

class MyClass {
   protected:
   templated<SomeClassNotDefinedHere> m_member;     
}

如果我使用

导出它
 class __declspec(dllexport) MyClass

无法编译,试图实现templated<SomeClassNotDefinedHere>的所有内联成员。

有一种简单的方法可以避免这种情况吗?我不想将SomeClassNotDefinedHere添加为使用MyClass的每个库的依赖项。

一些模板化代码,这是一个像类一样的智能指针。 (试图让我的例子保持最小,真正的模板类是osg::ref_ptr

template<class T>
 class templated
{
    public:
        typedef T element_type;

        templated() : _ptr(0) {}
        templated(T* ptr) : _ptr(ptr) { if (_ptr) _ptr->ref(); }
        templated(const templated& rp) : _ptr(rp._ptr) { if (_ptr) _ptr->ref(); }
       private:
            T* _ptr;
}

我宁愿避免使用类或大型重新设计,代码已在linux上使用。

0 个答案:

没有答案