【发布时间】:2016-08-22 19:46:21
【问题描述】:
例如,拿这个sn-p的代码:
class Foo;
class Something {
Foo *thing;
};
typedef std::vector<Something> Foo;
这不会编译,因为Foo 在typedef 被命中时已经是一个类型。但是,我认为它显示了我的用例;我有周期性的依赖关系,需要一个来实现另一个,但是(目前)其中一件事是 typedef 的。我不想写类似的东西
class Foo {
std::vector<Something> inside;
}
因为我需要记住每个my_foo.inside.some_method() 中的inside。我还想避免在 std::vector<Something> 周围编写包装器,因为它会是很多样板。
我如何转发声明我使用 typedef 定义的类型? 或者,我如何解决我的循环依赖问题没有使用其中之一上面的解决方案?有可能吗?
请注意,我不是在问“我如何typedef 使用尚未声明的类型”。我在问“我如何使用typedef 来定义先前声明的类型”。
【问题讨论】:
-
如果有任何术语被关闭,我们深表歉意。我从来没有真正学会它。请随时纠正我或质疑似乎错误的假设。
-
typedef Foo;也许 -
@Jean-FrançoisFabre IIRC 这是一个编译错误
-
@Jean-FrançoisFabre 嗯??
-
建议更一致/和谐的代码;忘记
typedef,使用using-using Foo = std::vector<Something>;。对您的问题没有帮助,只是想提一下;-)
标签: c++ typedef forward-declaration