说我有一类本身引用的STL容器:导出包含在一个DLL接口相同类别的STL类成员
class __declspec(dllexport) Widget {
protected:
std::vector<Widget *> children;
}
如果我有类定义之前说int
的vector
相反,我可以有以下几种:
template class __declspec(dllexport) std::vector<int>;
这应该会工作。但是如果这个班级没有定义,我该怎么做?向前声明该类:
class Widget;
template class __declspec(dllexport) std::vector<Widget *>;
不会摆脱我从MSVC得到的警告;
warning C4251: 'Widget::children' : class 'std::vector<Widget *,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'Widget'
我相信警告本身的信息是有点相关,但我不知道该怎么办才好。
我会尝试'模板类__declspec(dllexport)std ::向量>;' –
类__declspec(dllexport)Widget作为前向声明是发布的吗? – marom