当我导出一个包含STL对象unique_ptr的类时,我的编译器会生成C4251警告,告诉我必须完全指定unique_ptr。
class IMPORT_EXPORT_API Factory
{
std::unique_ptr<ClassA> impl{ nullptr };
public:
std::unique_ptr<ClassB> create();
}
然而,当我只导出一个同时返回STL对象的方法,而不是整个类时,我不会得到错误。
class Factory
{
std::unique_ptr<ClassA> impl{ nullptr };
public:
IMPORT_EXPORT_API std::unique_ptr<ClassB> create();
}
为什么会这样?