繁体   English   中英

附加到向量时出现“未命名类型”错误

[英]“does not name a type” error when appending to vector

#include <vector>
#include "Node.h" // EDIT: added
Node node1(true,11);
Node node2(true,04);
std::vector<Node> room1;
room1.push_back(node1);

我只想将node1添加到名为room1的节点的向量中。对我来说,它看起来完全像教程中的指示,但是我收到一条错误消息:“ room1未命名类型”。


编辑:节点的标题已包括在内。 Node所做的只是一个获取(bool,int)并将其存储。 (该程序长达数百行,只是试图保持内容的相关性。)

关于room1未命名类型的错误来自您的代码不在函数或对象方法内。 您可以将定义放在文件的外部范围中,但不能放在要执行的任意代码行中。 代码需要上下文才能运行。

#include <vector>
#include "Node.h"

int main() {
    Node node1(true,11);
    Node node2(true,04);
    std::vector<Node> room1;
    room1.push_back(node1);
}

请注意,根据C ++规范,对main()的要求非常具体,这是不从main返回结果的:

main()在C和C ++中应该返回什么?

如果您编写的其他函数具有返回类型,则应具有return语句。

C++语法禁止这样做,因为在名称空间范围内唯一允许的内容是声明 这些可以是类,函数或嵌套的名称空间声明。 由于room1.push_back(node1); 不属于此类别,则您的程序格式错误。 您可能希望将其放在函数中。 最简单的示例将其放入main

#include <vector>
#include "Node.h" // EDIT: added
Node node1(true,11);
Node node2(true,04);
std::vector<Node> room1;

int main()
{
room1.push_back(node1);
return 0;
}

您可能还希望将room1node1node2移到main

您忘记了包含Node的标头,或更Node是, Node在当前翻译单元中不是可见类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM