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

Incomplete type, what does this mean?

本文关键字:是什么 意思 类型      更新时间:2023-10-16

我正在尝试调试我的程序,并且正在从一个名为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;
}

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

以下是包括:

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

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

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

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

"

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

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

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