不完整的类型,这是什么意思?

时间:2012-12-19 06:56:53

标签: c++

我正在尝试调试我的程序,我正在从一个名为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&lt;&lt;“good”;为了看它是否会运行到那一点,当我的程序执行时,它所做的一切都是重复显示“好”。

以下是包含:

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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