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

标签 c++ list struct

我有这样的 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

为什么我不能在下一个结构中使用我的结构作为列表?

最佳答案

namespacestruct 同名。当您键入 timers:: 时,编译器假定这是指 struct,而不是 namespace(这是一种名称隐藏) .

因此,由于 timers 类尚未完全编写,编译器会提示类型“不完整”。

拥有相同名称的classnamespace是个坏主意,但如果您只输入以下内容,您的代码就可以编译:

std::list<timer> timers_list;

因为当你引用同一个东西时,你不需要显式命名空间。

关于c++ - 列表、命名空间中的嵌套名称说明符中的类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917544/

相关文章:

python - 在 Python 列表中迭代 - 它是复制还是使用迭代器?

c - 如何使用c在链表节点中传递两个参数?

c - 在结构定义中分配下一个指针 = NULL,会引发错误

c++ - cuDNN 必须要有平台吗?

c++ - 如何在 Windows 控制台中禁用用户选择

python - 如何将一维数组的索引传输到二维数组?

c - 将元素添加到有序链接列表

c++ - 在 C++ 的 main() 函数中声明的类

面对大项目的C++书籍推荐

c# - List.AddRange 调用 List.Add 吗?