向量大小在构造函数外部恢复为 0

vector size reverts to 0 outside constructor

本文关键字:恢复 外部 构造函数 向量      更新时间:2023-10-16

>我有一个类[网络],它在构造过程中创建对象的向量[节点]

在构造函数内部,我有声明

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);

退出后构造函数被销毁。

您必须使用类的相应数据成员,而不是此局部变量。