簡體   English   中英

向量無法正確接受新元素

[英]Vector does not accept new element properly

我在下面的代碼中看到一些奇怪的行為。 我的控制台正在打印

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()似乎得到的向量沒有准確列出我插入的第一個元素嗎?

您正在使用全局變量來存儲實例數據:

std::string title;

這意味着程序中只有一個title ,並且如果您更改了它,則訪問它的每個類,函數等都會更改。

使其成為Node的非靜態成員變量,您的問題將消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM