我有一个像以下那样编译的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上使用。