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