我目前正在用C++编写一个程序,该程序从.txt文件获取信息并动态分配以便稍后参考。信息格式(名字姓氏)(工资)(扣除额)(%奖金)。我创建了一个头文件结构是如下:与变量范围的错误
struct PayrollInfo
{
string first, last;
float salary, deduction, bonus;
PayrollInfo *next;
};
我的问题是,当我呼吁在一个由主函数调用的函数变量,编译器给我一个错误的说法变量“超出范围”。我的印象是,因为我在main函数中声明了结构指针,这些结构指针会传递给函数调用的函数。我能做些什么来解决这个问题?我已经在下面包含了我的代码。 Open是一个我打开文件并返回0的函数,如果它存在等。另外,我是使用动态内存分配的新手,因此如果Read()函数有任何可见的错误,请让我知道!
main()
{
PayrollInfo *head, *tail, *newp, *tmp;
head = tail = newp = tmp = NULL;
while(newp = Read())
.
.
.
PayrollInfo *Read()
{
PayrollInfo *tmp = NULL;
if (Open() == 0)
{
tmp = new PayrollInfo;
tmp->first = first;
tmp->last = last;
tmp->salary = salary;
tmp->bonus = bonus;
tmp->deduction = deduction;
}
else
return NULL;
return tmp;
}
哇你需要一个'int'在这之前'main()'! – ChiefTwoPencils
提示:切勿使用'new'。在这种情况下,智能指针会做同样的事情,但更好。当然,如果你能提供帮助,甚至不会使用动态分配。没有指针,显示的代码仍然有效。 – chris
确保在新建PayrollInfo时初始化下一个指针。否则,你会在那里发生垃圾,这从来没有好玩的调试。 –