【发布时间】:2011-06-29 22:19:59
【问题描述】:
假设有一个名为(包括命名空间)other::OtherClass 的第三方类。
这是头文件。
class MyClass {
public:
...
private:
other::OtherClass other_class_;
...
}
如果这个头文件是在生产中发布的,这是否会被认为将实现暴露给客户端?
另一方面,在公共接口中使用第三方类是个好主意吗? (请注意,第二个示例不一定将该类保存到私有成员中。)
class MyClass {
public:
MyClass(const other::OtherClass& other_class);
...
private:
...
}
在第一个示例中,客户端必须知道other::OtherClass 的大小并包含头文件。在第二个示例中,客户端需要能够构造other::OtherClass,如果没有提供工厂,则可能需要头文件。
做上面的例子有什么好的借口吗?
如果这几乎不是一个好主意,那么设计上述类的常用方法是什么?
【问题讨论】:
标签: c++