1

我有一个像下面这样的 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 上使用。

4

0 回答 0