現在、.txt ファイルから情報を取得し、後で参照できるように動的に割り当てるプログラムを C++ で作成しています。情報の形式は、(姓名) (給与) (控除) (ボーナス%) です。次のようなヘッダー ファイルに構造体を作成しました。
struct PayrollInfo
{
string first, last;
float salary, deduction, bonus;
PayrollInfo *next;
};
私の問題は、メイン関数によって呼び出される関数内の変数を呼び出すと、変数が「範囲外」であるというエラーがコンパイラから返されることです。メイン関数で構造体ポインタを宣言したため、それらが呼び出された関数に引き継がれるという印象を受けました。これを修正するにはどうすればよいですか? 以下に私のコードを含めました。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;
}