繁体   English   中英

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

[英]Incomplete type, what does this mean?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM