【发布时间】:2015-08-05 16:02:48
【问题描述】:
我有很多这样的课程:
class A
{
public:
std::string s;
std::vector<int> v;
int a;
}
我正在尝试导出以在 dll 中使用。我希望客户能够像这样使用该类:
A a;
a.s = "abc";
b.v.push_back(4);
但是因为向量和字符串不能导出,所以这是不可能的。除了为每个成员提供 getter 和 setter 并使用具有这些 getter 和 setter 的抽象接口之外,还有什么办法解决这个问题吗?
【问题讨论】:
-
在重新设计某些东西时,尝试实际提出一个合理的设计。一堆公共数据成员,无论是裸露的还是用 getter/setter 装饰的,都不是。如果您正在尝试解决假定的 MSVC 无法导出字符串 which isn't really that bad 的问题,请将其称为解决方法,而不是重新设计,但事实并非如此。无论如何,如果您认为您不应该导出字符串数据成员,那么出于同样的原因,您不应该能够导出字符串 getter。