如何转发声明要使用 typedef 创建的类型?
How can I forward declare a type I'm going to create with typedef?
例如:
class Foo;
class Something {
Foo *thing;
};
typedef std::vector<Something> Foo;
不能编译,因为当点击typedef
时,Foo
已经是一个类型了。然而,我认为它展示了我的用例;我有周期性依赖关系,需要一个来满足另一个,但(目前)其中一个是类型定义的。我不喜欢写像
class Foo {
std::vector<Something> inside;
}
因为我需要记住每个my_foo.inside.some_method()
中的inside
。我也想避免围绕std::vector<Something>
编写包装器,因为它会有很多样板文件。
如何转发声明我用typedef
定义的类型?或者,我如何解决我的周期性依赖问题而不使用上面的解决方案之一 ?这可能吗?
请注意,我不是在问"我如何使用尚未声明的类型typedef
"。我的问题是"如何使用typedef
来定义先前声明的类型"。
代替前向声明类:
class Something;
typedef std::vector<Something> Foo;
class Something { Foo *thing; };
如果您使用的是c++ 11或更高版本,请使用using
声明代替typedef
:
class Something;
using Foo = std::vector<Something>;
class Something { Foo *thing; };
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何创建 typedef 结构的前向声明
- 如何使用 typedef 创建多个数组?
- C++:从两个包含子类 (typedef) 的列表创建一个列表
- 使用 typedef 创建节点有什么优势?
- 在 Java 中创建"typedef"的可能方法
- 强制转换为使用typedef创建的结构类型
- 是否可以使用宏来创建typedef
- Xcode typedef 的 struct 创建错误/警告
- C++ typedef 和返回类型:如何让编译器识别使用 typedef 创建的返回类型
- 创建从外部作用域重新声明模板参数的typedef的负面影响
- 使用结构数组创建typedef
- 如何在C++中创建条件typedef
- 在没有"typedef"的情况下,如何创建用于 c# 泛型的相关类型组?
- 使用typedef从分配器创建shared_ptr
- 如何转发声明要使用 typedef 创建的类型?
- 将使用typedef创建成员吗?