4

我正在尝试调试我的程序,并且正在从名为 intInputFile 的文件中读取值。我正在查看我的局部变量,发现它说 intInputFile = 不完整类型。我已经尝试查找它,但没有明确的答案,我不知道这是什么意思。谁能解释一下,因为我认为这弄乱了我的程序。

谢谢。

intInputFile >> fileInt;
cout << "check" <<endl;
while(!intInputFile.eof())
{
    intNode* anotherInt;
    anotherInt = new intNode;
   if(intList==NULL)
   {
       intList = anotherInt;
       lastInt = anotherInt;
       lastInt->nextNode = NULL;
       lastInt->nextNode = new intNode;
   }
   else
   {
      lastInt = lastInt->nextNode;
      lastInt->nextNode = NULL;
      lastInt->nextNode = new intNode;
   }
   lastInt->intValue = fileInt;
   intInputFile >> fileInt;
   cout << "good" <<endl;
}

第一次执行后,它正确地从文件中读取了第一个整数,但我在调试时注意到了不完整的类型。另外,我包括 cout <<"good"; 看看它是否会运行到那个点,当我的程序执行时,它所做的只是反复显示“好”。

以下是包括:

   #include <iostream>
   #include <string>
   #include <fstream>

我将其定义为常规 ifstream 类型:

  int fileInt; //int read from input file
  ifstream intInputFile;
4

2 回答 2

0

“不完整的类型”意味着提供消息的工具(通常是编译器,但在您的情况下是调试器)并不确切知道类型的样子。它知道有一个类型,但不知道它有哪些成员或它们在内存中的布局方式。

如果调试器告诉您这一点,那是非常无害的。它不会影响程序的执行,但可能会限制您的调试选项(如果您需要查看未知类型的成员)。

如果编译器告诉你这个,你就有一个严重的问题,因为编译器无法检查代码是否真的有效。此错误通常是由#include定义类型的标头缺少行引起的。

于 2012-12-19T08:52:37.930 回答
0

错过的包含或多个包含或导致类型的定义intInputFile在该代码行不可见的东西。

于 2012-12-19T07:01:04.363 回答