我的结构与此类似:
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;
我知道类的类似行为,但结构?不确定是否会造成一些麻烦...
提前致谢!
答案 0 :(得分:4)
由于typedef
只是一个类型别名,并且在C ++中是不必要的(struct标签可以直接用作类型名称),所以只需删除它。
struct foo;
using fooVec = std::vector<struct foo>;
struct foo {
std::shared_ptr<fooVec> data;
};
答案 1 :(得分:0)
是的,我很确定这是有效的。