gpt4 book ai didi

c++ - 是否应该从命名空间库中向前声明类?

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:56 25 4
gpt4 key购买 nike

我正在设计一个将放置在命名空间内的 C++ 库。

如果我的库的用户只需要我的一个类的前向声明,并且因为你不能在命名空间内做前向声明,例如class ns_name::class_name; , 我应该

  • 告诉他们改为包含包含该类的整个头文件,
  • 或者,为他们提供一种从我的库中转发声明内容的方法?例如:

    #define MD_FORWARD_DECLARE(x) namespace md { x; }

    然后可以这样使用:

    MD_FORWARD_DECLARE(class foo)

    值得吗?

  • 或者,让他们做 namespace md { class foo; }他们自己?
  • 或者,如 DevSolar 所述, 制作一个由前向声明组成的专用头文件,如 <iosfwd> ?这对我来说似乎最优雅。

最佳答案

正如@molbdnilo 所指出的,使用命名空间进行前向声明并没有错。第一个选项根本不是一个选项,出于各种原因我不想包含 header ,直到我不得不这样做,前向声明始终是首选方式。为什么不像许多 boost 实现那样只提供带有前向声明的 header ?例如 boost spirit numerics_fwd.hpp?

啊,错过了@DevSolar 的评论。恕我直言,这是最好的解决方案。

关于c++ - 是否应该从命名空间库中向前声明类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865696/

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