gpt4 book ai didi

c++ - 转发声明可能的 typedef c++0x

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:09 25 4
gpt4 key购买 nike

我从Forward declare a class's public typedef in c++这个问题的答案中了解到, 在 C++ 中前向声明可能是 typedef 的东西是不可能的。

是否可以在 C++0x 中完成此问题的要求?

否则,进行如下更改:

class X {...};
typedef X Z;

class Y {...};
typedef Y Z;

破坏客户端代码。

我认为不应该这样,因为 typedef 的要点是它们应该使底层类型对客户端透明,因此您可以在不破坏客户端代码的情况下更改实现。

澄清

基本上,假设我们有这两个选项:

class X {...};
typedef X Z; // (1)

class Z {...}; // (2)

我希望能够在客户端代码中执行此操作:

class Z; // Or something of this effect, sadly this fails in the case of (1)

而且无论 Z 是 typedef 还是类(这对客户端确实应该是透明的),该代码都不需要更改。

最佳答案

假设 header 包含在用户源的“头部”,并且它们不会转发声明您的类。如果用户想要更轻量级的 header ,请给他们一个。

标准库包含一个由前向声明组成的 header ,<iosfwd> .您可以采用或改编该约定,例如 "foo_forward.h" .

当用户在任何地方为您的类编写前向声明时,他实际上是在为您编写标题。这是一个站不住脚的安排。

关于c++ - 转发声明可能的 typedef c++0x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521208/

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