我从问题的答案Forward declare a class's public typedef in c++了解,前宣布一些东西,可以在C的typedef是不可能++。正向声明可能的typedef的C++ 0x
在C++ 0x中可以做这个问题吗?
否则,进行更改,如:
class X {...};
typedef X Z;
到
class Y {...};
typedef Y Z;
休息客户端代码。
我觉得不应该是这样,因为类型定义的一点是,他们应该做的基本类型对客户透明,所以你可以改变而不会破坏客户端代码执行。
澄清
基本上,可以说,我们有可以有两种选择:
class X {...};
typedef X Z; // (1)
OR
class Z {...}; // (2)
我希望能够在客户端代码做到这一点:
class Z; // Or something of this effect, sadly this fails in the case of (1)
而且无论Z是typedef还是类(对于客户端来说都应该是透明的),该代码都不需要更改。
这还不清楚。这个问题是关于类中的typedef声明的,我想说解决方案是用一个名称空间替换或增加类。你不能将声明任何东西转发为其他任何东西,所以'class'不能作为'typedef'声明。这更像你所问的吗? – Potatoswatter 2011-04-02 04:48:50
嗨Potatoswatter,我试图澄清这个问题。 – Clinton 2011-04-02 04:55:35
真的很不错的库编写者为他们的客户端提供公共类型和转发,因此客户端永远不需要手动管理它。客户端只包含库的类型头。这也很好,所以你的库头不会有所有的转发噪音。转发和typedefs在编译时不需要花费任何东西 - 只需将公共类型放在那里即可。 – justin 2011-04-02 04:56:07