我目前正在用C ++编写一个程序,该程序从.txt文件中获取信息并动态分配它以便稍后引用。信息格式为(名字姓氏)(工资)(扣除额)(%奖金)。我在头文件中创建了一个结构,如下所示:
struct PayrollInfo
{
string first, last;
float salary, deduction, bonus;
PayrollInfo *next;
};
我的问题是,当我调用main函数调用的函数中的变量时,编译器会给出一个错误,指出变量“超出范围”。我的印象是因为我在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;
}
答案 0 :(得分:0)
不幸的是,由于我是新用户,我无法发表评论,或者我会...但是有一件事我注意到你的代码有点奇怪,我不能真正讲得太多,没有看到您的主要功能的其余部分,那就是您尝试使用变量first,last,salary,bonus和deduction,就好像它们是全局变量,当它们在程序中的任何其他地方看起来没有被定义时。
如果您的Open()函数用于定义这些变量,如果您想在其范围之外使用它们,则需要在其范围之外执行此操作 - 事先声明它们然后将Open()函数修改为接受对它们的引用作为参数,然后以这种方式修改它们,可以产生你正在寻找的结果。但事实上,你没有在我能看到的任何地方声明任何变量,如果它们在Open()中声明,那么你就会遇到问题。
发布您的Open()函数的代码以及main()函数之前的所有内容(包括变量定义等),也许问题会更明显。