Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QList和MyClass未声明的标识符_C++_Qt_Qlist - Fatal编程技术网

C++ QList和MyClass未声明的标识符

C++ QList和MyClass未声明的标识符,c++,qt,qlist,C++,Qt,Qlist,我对Qt4有奇怪的问题。 我试图创建MyClass的QList,但它显示MyClass:未声明的标识符。 我在全局对象中使用它。。这是代码,让我知道我做错了什么。 问候 全局对象。h: #ifndef GLOBAL_OBJECTS_H #define GLOBAL_OBJECTS_H #include <QList> #include "myclass.h" extern QList<MyClass*> Test; //undeclared identifier, w

我对Qt4有奇怪的问题。 我试图创建MyClass的QList,但它显示MyClass:未声明的标识符。 我在全局对象中使用它。。这是代码,让我知道我做错了什么。 问候

全局对象。h:

#ifndef GLOBAL_OBJECTS_H
#define GLOBAL_OBJECTS_H

#include <QList>
#include "myclass.h"

extern QList<MyClass*> Test; //undeclared identifier, why???

#endif // GLOBAL_OBJECTS_H
\ifndef全局对象\u H
#定义全局对象
#包括
#包括“myclass.h”
外部QList测试//未声明的标识符,为什么???
#endif//全局对象
全局_objects.cpp:

#include "global_objects.h"
QList <MyClass*> Test;
#包括“global_objects.h”
QList试验;

MyClass是空的QObject,尚未添加任何内容。怎么了

您有一个相互包含问题:出于您的目的,我认为在global_objects.h中向前声明MyClass就足够了。您不需要#在那里包含myclass.h

您是否将
myclass.h
包含在您的
global_objects.cpp

我想知道您是否在
global\u objects.cpp
中使用
MyClass
,然后您应该使用pre-complile命令声明它


希望提供帮助。

MyClass是在全局名称空间中定义的吗?另外,MyClass.h是否可能包含文件global#u objects.h(相互包含)?不,它的定义如下:class MyClass:public QObject,然后是Q#u OBJECT macroYes,是的。h还包括全局对象。这是您的问题所在,您需要避免相互包含头。我用手机打字,所以格式化代码有点困难,但我会尝试在我的答案中添加代码。无论如何,只需在global_objects.h中使用MyClass的前向声明,而不是包含MyClass.hh。他是通过包含global_objects.h间接实现的。问题是global_objects.h和myclass.h相互包含。我还没有在global_objects.cpp中包含myclass.h,我尝试过,但仍然遇到同样的问题。@OverFlowz:你间接地做到了。global_objects.cpp包括global_objects.h和global_objects.h包括myclass.h,因此通过传递性global_object.cpp包括myclass.hI尝试了这一点,但仍然存在相同的问题。MyClass.h不包括全局_对象.h,只有全局_对象.h包括MyClass.h,但错误相同:(myclass.h是否包含任何其他直接或间接包含全局#object.h的标头?顺便说一下,这不是相互包含问题,因为我有#ifdef。让我粘贴我的代码并向您展示。我不认为#ifdef可以避免相互包含问题。如果我是您,我会首先查找间接相互包含循环并中断。)当我尝试QList与QString、qtcSocket或任何其他东西一起使用时,它不会出现任何问题。它只是讨厌我的类。