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

时间:2015-04-09 21:26:26

标签: c++ class vector constructor

我有一个[网络]类,在构造期间创建一个对象矢量[节点]

在构造函数中我有声明

vector<Node> Nodes (NodeCount);

其中NodeCount是一个int,比方说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

我无法弄清楚为什么会发生这种情况

1 个答案:

答案 0 :(得分:2)

似乎在构造函数中定义了局部变量

vector<Node> Nodes (NodeCount);

退出构造函数后会被销毁。

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