我目前正在用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時初始化下一個指針。否則,你會在那裏發生垃圾,這從來沒有好玩的調試。 –