C++ 列表、命名空间中的嵌套名称说明符中的类型不完整
我有这样的timers.h文件:C++ 列表、命名空间中的嵌套名称说明符中的类型不完整,c++,list,struct,C++,List,Struct,我有这样的timers.h文件: namespace timers { struct timer { std::string next; }; struct timers { std::list<timers::timer> timers_list; timers(); }; 为什么我不能在下一个结构列表中使用我的结构 名称空间和结构具有相同的名称。当您键入计时器::时,编译器假定它引用的是结构,而不是命名空间(这是一种名称阴影) 因此,由于类计时器
namespace timers {
struct timer {
std::string next;
};
struct timers {
std::list<timers::timer> timers_list;
timers();
};
为什么我不能在下一个结构列表中使用我的结构
名称空间
和结构
具有相同的名称。当您键入计时器::
时,编译器假定它引用的是结构,而不是命名空间(这是一种名称阴影)
因此,由于类计时器尚未完全编写,编译器会抱怨类型“不完整”
使用相同名称的类
和命名空间
是个坏主意,但如果您只键入以下内容,代码就可以编译:
std::list<timer> timers_list;
std::list timers\u list;
因为您不需要显式地表示名称空间,所以当您将某个内容引用到同一名称中时。您对名称空间和结构使用了相同的名称,请尝试更改一个名称,这会有区别吗?
std::list<timer> timers_list;