当我尝试使用私有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。但不同之处在于您需要结构的实例来访问私有成员。那么更喜欢哪种方法?