Qt C ++ - Creation QList <myclass> - 不是参数'T的有效模板类型参数

时间:2017-03-17 12:22:57

标签: c++ qt qlist

我刚开始使用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

2 个答案:

答案 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
{
// ...
};