使用在该结构中包含结构的 using-definition

Use a using-definition containing a struct inside that struct

我有类似于这个的结构:

typedef struct foo {
      std::shared_ptr<std::vector<foo>> data;
} foo;

而且我有一个 using 定义来缩短类型(原始类型要长得多,我知道在这种情况下它不是那么有用):

using fooVec = std::vector<foo>;

现在,我想在结构中使用它:

typedef struct foo {
      std::shared_ptr<fooVec> data;
} foo;

但是...把using放在哪里?在struct之前,using没有足够的信息,因为struct是后面定义的。 在 struct 之后,struct 错过了 using 定义,因为它出现在后面......所以 - 以下有效吗?

struct foo;
using fooVec = std::vector<foo>;
typedef struct foo {
      std::shared_ptr<fooVec> data;
} foo;

我知道 类 有类似的行为,但是结构呢?不确定这是否会造成一些麻烦...

提前致谢!

是的,我很确定这是有效的。

由于typedef只是一个类型别名,在C++中不需要(struct标签可以直接作为类型名),直接放弃

struct foo;
using fooVec = std::vector<struct foo>;
struct foo {
      std::shared_ptr<fooVec> data;
};