我正在尝试调试我的程序,我正在从一个名为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;
答案 0 :(得分:0)
错过包含或多个包含或导致intInputFile
类型定义在该代码行中不可见的内容。
答案 1 :(得分:0)
“不完整类型”意味着提供消息的工具(通常是编译器,但在您的情况下是调试器)并不确切地知道类型是什么样的。它知道有一种类型,但不知道它有哪些成员或它们如何在内存中布局。
如果调试器告诉你这个,它是非常无害的。它不会影响程序的执行,但可能会限制您的调试选项(如果您需要查看未知类型的成员)。
如果编译器告诉你这个,那你就有一个严重的问题,因为编译器无法检查代码是否真的有效。此错误通常是由定义类型的标头缺少#include
行引起的。