gpt4 book ai didi

c++ - 在 C++ 头文件中使用第三方类

转载 作者:太空狗 更新时间:2023-10-29 21:50:16 27 4
gpt4 key购买 nike

假设有一个名为(包括命名空间)other::OtherClass 的第三方类。

这是头文件。

class MyClass {
public:
...
private:
other::OtherClass other_class_;
...
}

如果这个头文件在生产中发布,这是否会被视为将实现公开给客户端?

另一方面,在公共(public)接口(interface)中使用第三方类是否是个好主意? (请注意,第二个示例不一定将该类保存到私有(private)成员中。)

class MyClass {
public:
MyClass(const other::OtherClass& other_class);
...
private:
...
}

在第一个示例中,客户端必须知道 other::OtherClass 的大小并包含头文件。在第二个示例中,客户端需要能够构造 other::OtherClass 如果未提供工厂,它也可能需要头文件。

做上面的任何例子都有很好的借口吗?

如果这几乎不是一个好主意,那么像上面这样设计类的通常方法是什么?

最佳答案

供应商必须通过他们提供的头文件向客户公开一些他们的库。

也就是说,有一些技术可以在实现中隐藏数据和函数。一种更常见的技术是提供公共(public)代理类和工厂函数,它们只向客户端公开最少数量的公共(public)功能。

关于您的第二个问题,最好在 header 中使用对第三方类型的引用和指针,因为您可以在 header 文件中将类型转发声明为:

class other::OtherClass;

需要实际包含第三方头文件。这不会向您图书馆的客户公开任何第三方详细信息。

关于c++ - 在 C++ 头文件中使用第三方类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com