Fun*_*uit 4 c++ typedef forward-declaration
例如,请使用以下代码段:
class Foo;
class Something {
Foo *thing;
};
typedef std::vector<Something> Foo;
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为Foo在typedef命中时它已经是一个类型.但是,我认为它显示了我的用例; 我有周期依赖,需要一个来实现另一个,但(目前)其中一个是typedef'd.我不想写类似的东西
class Foo {
std::vector<Something> inside;
}
Run Code Online (Sandbox Code Playgroud)
因为那时我需要记住inside每一个my_foo.inside.some_method().我也想避免写一个包装器std::vector<Something>,因为它是很多样板.
我如何转发声明我用一个类型定义的类型typedef?或者,如何在不使用上述解决方案的情况下解决我的周期性依赖问题?有可能吗?
请注意,我不会问"如何typedef使用尚未声明的类型".我问"如何使用它typedef来定义先前声明的类型".
转发声明该类:
class Something;
typedef std::vector<Something> Foo;
class Something { Foo *thing; };
Run Code Online (Sandbox Code Playgroud)
如果您使用的是C++ 11或更高版本,请使用using声明代替typedef:
class Something;
using Foo = std::vector<Something>;
class Something { Foo *thing; };
Run Code Online (Sandbox Code Playgroud)
就这样.