矢量大小在构造函数外恢复为 0
vector size reverts to 0 outside constructor
我有一个 class [网络],它在构造过程中创建了一个对象向量 [节点]
在构造函数中我有声明
vector<Node> Nodes (NodeCount);
其中 NodeCount 是一个整数,假设为 5
在我可以调用的构造函数中
cout << Nodes.size()
输出将是 5
这里是构造函数
Network::Network()
//establish initial Node count for network
/*
cout << "How many Nodes: ";
cin >> NodeCount;
*/
NodeCount = 5;
vector<Node> Nodes (NodeCount);
cout << "Nodes.size(): " << Nodes.size() << endl;
//initialize tables for all Nodes
for(int i = 0; i < Nodes.size(); i++)
{
Nodes[i].initTable(i, NodeCount);
//cout << "Nodes[" << i << "].table[0] - " << Nodes[i].table[0] << endl;
debug();
- 请原谅我试图调试的评论
但在构造函数之外,如果我在说这个函数
void Network::debug()
cout << "NodeCount: " << NodeCount << endl;
cout << "Nodes.size(): " << getSize() << endl;
这是输出
NodeCount: 5
Nodes.size(): 0
我一辈子都弄不明白为什么会这样
您似乎在构造函数中定义了局部变量
vector<Node> Nodes (NodeCount);
在退出构造函数后被销毁。
您必须使用 class 的相应数据成员,而不是这个局部变量。
我有一个 class [网络],它在构造过程中创建了一个对象向量 [节点]
在构造函数中我有声明
vector<Node> Nodes (NodeCount);
其中 NodeCount 是一个整数,假设为 5
在我可以调用的构造函数中
cout << Nodes.size()
输出将是 5
这里是构造函数
Network::Network()
//establish initial Node count for network
/*
cout << "How many Nodes: ";
cin >> NodeCount;
*/
NodeCount = 5;
vector<Node> Nodes (NodeCount);
cout << "Nodes.size(): " << Nodes.size() << endl;
//initialize tables for all Nodes
for(int i = 0; i < Nodes.size(); i++)
{
Nodes[i].initTable(i, NodeCount);
//cout << "Nodes[" << i << "].table[0] - " << Nodes[i].table[0] << endl;
debug();
- 请原谅我试图调试的评论
但在构造函数之外,如果我在说这个函数
void Network::debug()
cout << "NodeCount: " << NodeCount << endl;
cout << "Nodes.size(): " << getSize() << endl;
这是输出
NodeCount: 5
Nodes.size(): 0
我一辈子都弄不明白为什么会这样
您似乎在构造函数中定义了局部变量
vector<Node> Nodes (NodeCount);
在退出构造函数后被销毁。
您必须使用 class 的相应数据成员,而不是这个局部变量。