我刚开始使用C ++ Qt并编写了以下.h文件:.cpp文件只包含空构造函数和析构函数。
#include <QList>
class XML_Files
{
public:
XML_Files();
~XML_Files();
protected:
QList<Myclass> m_Xmls;
};
class Myclass
{
public:
Myclass();
~Myclass();
protected:
int a;
};
但我一直收到以下错误:
error C2065: 'Myclass': undeclared identifier
error C2923: 'QList': 'Myclass' is not a valid template type argument for parameter 'T'
如何使用自己的数据类型声明Qlist
?
答案 0 :(得分:3)
在编译器知道之前,您不能使用名称MyClass
。由于您在MyClass
之后才宣布XML_Files
,因此无法在XML_Files
中使用该名称。
这里最简单的解决方案是只更改声明的顺序,并在MyClass
之前声明XML_Files
。
答案 1 :(得分:1)
解决这个问题的简单方法是改变两个类的顺序。但是,如果不希望或不可能,还有第二种解决方案:
您可以在定义之前声明Myclass
。然后编译就会成功。
#include <QList>
class Myclass;
class XML_Files
{
public:
XML_Files();
~XML_Files();
protected:
QList<Myclass> m_Xmls;
};
class Myclass
{
// ...
};