7

无法编译我的课程。出现错误:错误:字段“文件名”的类型不完整

如果我更改QString filenameQString *filename,错误就会消失..但我需要QString filename.

进程.h:

#ifndef PROCESS_H
#define PROCESS_H

#include <QString>

class Process
{
public:
    int pid;
    QString filename;
    Process(int pid, QString filename);
};

#endif // PROCESS_H

进程.cpp:

#include "process.h"

Process::Process(int pid, QString filename)
{
    this->pid = pid;
    this->filename = filename;
}

怎么了?

4

4 回答 4

7

以我的经验,当这种奇怪的错误无缘无故出现时,大多数时候都是通过更改一些名称来解决的,因此是名称冲突。(但大多数时候,我仍然不明白冲突在哪里)。

所以我会拼命尝试更改名称,以便:

  1. 名称头保护PROCESS_H
  2. 班级名称Process
  3. 成员的名字filename
  4. 文件名process.hprocess.cpp(如果有其他文件夹具有相同的文件名,如果你使用qmake,它们将在同一个地方编译)
  5. 成员的名字pid,因为此时你真的很绝望

使用您确实确定不能使用的东西,例如MySuperFancyProcess;-)

于 2013-06-14T20:14:12.003 回答
1

问题解决了!是的,这是因为 QString 类;不是在我的文件中,而是在某些 QT 中

于 2013-06-15T08:44:11.780 回答
1

您在头文件名中的错误是因为 qt alredy 有“process.h”。创建文件“signal.h”时出现类似错误,重命名为“signal_db.h”时将其清除

于 2020-11-18T13:29:31.130 回答
0

如果有人有同样的问题,请发表评论以添加一些说明。我还有一个名为“Process”的课程,这是导致此问题的原因。我重命名了类,并将标题保护重命名为稍微不同的字符串,在我的情况下为“AProcess”,这解决了问题。

于 2020-09-14T16:19:27.910 回答