是否使用匿名结构有效地将stl类成员导出到dll?

时间:2017-04-24 21:41:12

标签: c++ stl dllexport

当我尝试使用私有std :: vector成员运行类时,我偶然发现了一些错误。如果我只是导出整个班级,我会得到通常的警告(虽然你可以用私人成员忽略它们)。当然有几种方法可以解决这个问题,但我发现如果我将这些成员包含在一个匿名结构中,它也会起作用:

class __declspec(dllexport) Test{
private:
    struct{
        std::vector<int> data;
    };
};

我知道匿名结构不是标准结构,但是我用它测试的编译器支持它们(MSVC,GCC)。然而,这实际上是有效还是只是一些讨厌的黑客来摆脱我应该避免的警告?

编辑: 我刚刚注意到这与此问题的接受答案类似:Export a STL class member containing the same class in a DLL interface。但不同之处在于您需要结构的实例来访问私有成员。那么更喜欢哪种方法?

0 个答案:

没有答案