我正在尝试读取包含以下三个属性的文本文件;
RouterID,X坐标,Y坐标。
txt文件的简短片段如下所示;
100 0 0
1 20.56 310.47
2 46.34 219.22
3 240.40 59.52
4 372.76 88.95
现在,我想要实现的是为每个 RouterID 创建一个节点并存储其相应的x和y坐标。为此,我创建了以下类;
class Node {
public:
float routerID;
float x;
float y;
void set_rid (float routerID) {
routerID = routerID;
}
void set_x_y (float x, float y) {
x = x;
y = y;
}
};
我有以下内容执行为每个routerID创建新节点的工作;
const std::string fileName = "sampleInput.txt";
std::list<Node> nodeList;
int main (void) {
std::ifstream infile(fileName);
float a(0);
float b(0), c(0);
//This reads the file and makes new nodes associated with every input
while (infile >> a >> b >> c) {
Node newNode;
newNode.set_rid (a);
newNode.set_x_y (b, c);
std::cout << "newNode " << "rid = " << newNode.routerID << " x = " << newNode.x << " y = " << newNode.y << std::endl;
nodeList.push_back(newNode);
}
我在while循环中执行以下行只是为了检查分配的值是否正确。
std::cout << "newNode " << "rid = " << newNode.routerID << " x = " << newNode.x << " y = " << newNode.y << std::endl;
当我编译并运行代码时,我得到以下内容作为我们所有输出的输出;
newNode rid = -1.07374e+008 x = -1.07374e+008 y = -1.07374e+008
我上周刚刚开始学习C ++,这是我尝试编写的第一个“大”程序。有谁能指出我正确的方向?
答案 0 :(得分:3)
void set_rid (float routerID) {
routerID = routerID;
}
这不符合你的想象。它将参数分配给自己; this->routerID
的值保持不变。与set_x_y
相同。只需为方法参数指定一些与数据成员不同的名称。
答案 1 :(得分:1)
另一个区分类变量和输入参数的方法是使用关键字 this。,这样你就可以通过调用this.routerID,this.x和this.y