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

C++ 使用包含该结构内部结构的using定义,c++,struct,using,C++,Struct,Using,我有一个类似于此的结构: typedef struct foo { std::shared_ptr<std::vector<foo>> data; } foo; typedef结构foo{ std::共享的ptr数据; }傅; 我有一个使用定义来缩短类型(原始类型要长得多,我知道在这种情况下它没有那么有用): 使用fooVec=std::vector; 现在,我想在结构内部使用: typedef struct foo { std::share

我有一个类似于此的结构:

typedef struct foo {
      std::shared_ptr<std::vector<foo>> data;
} foo;
typedef结构foo{
std::共享的ptr数据;
}傅;
我有一个使用定义来缩短类型(原始类型要长得多,我知道在这种情况下它没有那么有用):

使用fooVec=std::vector;
现在,我想在结构内部使用:

typedef struct foo {
      std::shared_ptr<fooVec> data;
} foo;
typedef结构foo{
std::共享的ptr数据;
}傅;
但是。。。在哪里放置使用工具?在创建结构之前,使用没有足够的信息,因为该结构是稍后定义的。 在结构之后,该结构将丢失using定义,因为它发生在后面。。。那么,以下内容有效吗

struct foo;
using fooVec = std::vector<foo>;
typedef struct foo {
      std::shared_ptr<fooVec> data;
} foo;
structfoo;
使用fooVec=std::vector;
typedef结构foo{
std::共享的ptr数据;
}傅;
我知道类也有类似的行为,但是结构?不确定这是否会引起一些麻烦


提前谢谢

> P>是的,我确信这是有效的。

< P>是的,我确信是有效的。

< P> >代码> TyPulf只是一个类型别名,C++中不需要(结构标签可以直接用作类型名),只要删除它。
struct foo;
using fooVec = std::vector<struct foo>;
struct foo {
      std::shared_ptr<fooVec> data;
};
structfoo;
使用fooVec=std::vector;
结构foo{
std::共享的ptr数据;
};

<代码> > p> >代码> TyPulf只是一个类型别名,C++中不需要(结构标签可以直接用作类型名),只要删除它。
struct foo;
using fooVec = std::vector<struct foo>;
struct foo {
      std::shared_ptr<fooVec> data;
};
structfoo;
使用fooVec=std::vector;
结构foo{
std::共享的ptr数据;
};

>不需要在C++中使用代码< > TyPulf< /COD>欺骗。代码>结构foo{…}就足够了。“以下内容有效吗?”您是否尝试编译它?“我知道类的类似行为,但是结构”它们之间没有区别,除了成员和基的默认访问说明符。好的,谢谢:是的,它编译,但不确定是否存在“隐藏的问题”-最难找到bug编译……你不需要在C++中使用代码< > TyPulf< /Cord>欺骗。代码>结构foo{…}就足够了。“以下内容有效吗?”您是否尝试编译它?“我知道类有类似的行为,但结构”它们之间没有区别,除了成员和基的默认访问说明符。好的,谢谢:)是的,它编译,但不确定是否有“隐藏问题”-编译时最难发现的bug…谢谢,将删除它。谢谢,将删除它。