我使用链接列表来存储用户输入,然后使用他们的输入进行计算。当我尝试使用链表时,调试显示列表为空。
第一个函数是House对象的构造函数,它创建一个Room链表,用于存储房间的长度和宽度。
House::House(){
int tempwid = 0;
int templen = 0;
houseSize = 0;
bool cont = true;
node *root;
node *conductor;
root = new node;
root->next = 0;
conductor = root;
if (conductor != 0) {
while (cont){
houseSize++;
tempwid = 0;
templen = 0;
if(tempwid == -1 || templen == -1){
cont = false;
}//End if
else{
cout << "\nPlease enter the dimensions for room #" << houseSize << ". Enter a -1 when you are finished.";
cout << "\nWidth? ";
cin >> tempwid;
cout << "Length? ";
cin >> templen;
if(tempwid == -1 || templen == -1){
cont = false;
}//End if
else{
conductor->width=tempwid;
conductor->length=templen;
conductor->next = new node;
conductor = conductor->next;
conductor->next = 0;
}//End else
}//End else
}//End while
conductor->next = new node;
conductor = conductor->next;
conductor->next = 0;
}//End if
}//End constructor
这个功能只需要占用所有房间的长度和宽度,并计算整个房屋的面积。
double House :: calculateTax(double tax){
node *root;
node *conductor;
double totalArea = 0;
int i = 0;
conductor = root;
while (conductor->next!=0){
cout <<"Length: " << conductor->length;
cout <<"Width: " << conductor->width;
totalArea += conductor->length * conductor->width;
conductor = conductor->next;
}//End while
totalArea *= tax;
return totalArea;
}//End Function
答案 0 :(得分:3)
您在两种方法中使用局部变量root
和conductor
,而不是类成员。您没有提供类声明来查看这些成员是否存在,但即使它们存在,它们也会使用相同的名称用局部变量进行遮蔽。局部变量的值不在不同的函数和方法之间共享,也不在同一函数/方法的不同调用之间共享。这就是他们被称为 local 的原因。