我有这样的 timers.h 文件:
namespace timers {
struct timer {
std::string next;
};
struct timers {
std::list<timers::timer> timers_list;
timers();
};
当我尝试编译我的程序时,它显示:
modules/timers.h:23:13: error: incomplete type 'timers::timers' used in nested name specifier
为什么我不能在下一个结构中使用我的结构作为列表?
最佳答案
namespace
和 struct
同名。当您键入 timers::
时,编译器假定这是指 struct
,而不是 namespace
(这是一种名称隐藏) .
因此,由于 timers
类尚未完全编写,编译器会提示类型“不完整”。
拥有相同名称的class
和namespace
是个坏主意,但如果您只输入以下内容,您的代码就可以编译:
std::list<timer> timers_list;
因为当你引用同一个东西时,你不需要显式命名空间。
关于c++ - 列表、命名空间中的嵌套名称说明符中的类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917544/