我有如下的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++ - 列表, namespace 中嵌套名称说明符中的类型不完整,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37917544/