0

我目前正在用 C++ 编写一个程序,该程序从 .txt 文件中获取信息并动态分配它以供以后参考。信息采用格式(名姓)(薪水)(扣除)(%奖金)。我在头文件中创建了一个结构,如下所示:

    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;
    }
4

1 回答 1

0

不幸的是,因为我是一个新用户,所以我不能发表评论,或者我会......但是我注意到你的代码有一点奇怪,如果没有看到你的其余部分,我真的不能说太多main 函数,这就是你试图使用变量 first、last、salary、bonus 和 deduction,就好像它们是全局变量一样,而它们似乎没有在程序的其他任何地方定义。

如果您的 Open() 函数旨在定义这些变量,那么如果您想在其范围之外使用它们,则需要在其范围之外执行此操作 - 事先声明它们,然后修改您的 Open() 函数以接受对它们作为参数,然后以这种方式修改它们,可以产生您正在寻找的结果。但是,实际上,您没有在我能看到的任何地方声明任何这些变量,如果它们是在 Open() 中声明的,那么您就有问题了。

发布您的 Open() 函数的代码以及 main() 函数之前的所有内容(包括、变量定义等),也许问题会更加明显。

于 2013-07-07T23:30:20.537 回答