我在下面的代码中看到了一些奇怪的行为。我的控制台正在打印
0lo1lo
实际上我在期待
0Hel1lo
Node.cpp
std::vector<Node> Node::getChildren() {
return children;
}
void Node::setChildren(std::vector<Node> childrenNodes) {
children = childrenNodes;
}
void Node::addChild(Node child) {
children.push_back(child);
std::cout << child.getTitle();
}
std::string Node::getTitle() {
return title;
}
来自主要功能
Node root = Node("root");
root.addChild(Node("Hel"));
root.addChild(Node("lo"));
std::cout << "\n";
std::vector<Node> children = root.getChildren();
for (int i = 0; i < children.size(); i++) {
Node menuItem = children[i];
std::cout << i;
std::cout << menuItem.getTitle();
}
std::cout << "\n";
有没有人知道为什么getChildren()似乎得到的矢量没有准确列出我插入的第一个元素?
答案 0 :(得分:3)
您正在使用全局变量来存储实例数据:
std::string title;
这意味着您的程序中只有一个title
,如果您更改它,它会更改访问它的每个类,函数等。
将其设为Node
的非静态成员变量,您的问题就会消失。