#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)并存储它。 (该程序长达数百行,只是为了保持内容的相关性。)
答案 0 :(得分:3)
关于room1
未命名类型的错误来自您的代码不在函数或对象方法中。您可以将定义放在文件的外部作用域中,但不能将行放在要执行的任意代码行中。代码需要运行上下文。
#include <vector>
#include "Node.h"
int main() {
Node node1(true,11);
Node node2(true,04);
std::vector<Node> room1;
room1.push_back(node1);
}
请注意,不从main返回结果是C ++规范为main()
做出的非常具体的限制:
What should main() return in C and C++?
如果他们有一个返回类型,你编写的其他函数应该有一个return语句。
答案 1 :(得分:1)
C++
的语法禁止这样做,因为命名空间范围内允许的唯一内容是declarations。这些可以是类,函数或嵌套的命名空间声明。由于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;
}
您可能希望将room1
,node1
和node2
移至main
。
答案 2 :(得分:0)
您忘记包含Node
的标头,或者更一般地说,Node
在当前翻译单元中不是可见类型。