使用包含该结构内部结构的using定义

时间:2018-02-04 15:41:54

标签: c++ struct using

我的结构与此类似:

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

我有一个使用定义来缩短类型(原始类型更长,我知道在这种情况下它没有那么有用):

using fooVec = std::vector<foo>;

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

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

但是...在哪里放置使用?在struct之前,使用没有足够的信息,因为稍后定义了struct。 在struct之后,struct错过了using定义,因为它发生在以后......所以 - 以下是否有效?

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

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

提前致谢!

2 个答案:

答案 0 :(得分:4)

由于typedef只是一个类型别名,并且在C ++中是不必要的(struct标签可以直接用作类型名称),所以只需删除它。

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

答案 1 :(得分:0)

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