Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 列表、命名空间中的嵌套名称说明符中的类型不完整_C++_List_Struct - Fatal编程技术网

C++ 列表、命名空间中的嵌套名称说明符中的类型不完整

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(); }; 为什么我不能在下一个结构列表中使用我的结构 名称空间和结构具有相同的名称。当您键入计时器::时,编译器假定它引用的是结构,而不是命名空间(这是一种名称阴影) 因此,由于类计时器

我有这样的timers.h文件:

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;