2017-03-17 7 views
0

のテンプレートタイプ引数が有効ではありません。C++ Qtを使い始めました。次の.hファイルを書きました。.cppファイルには空のコンストラクタとデストラクタのみが含まれています。Qt C++ - 作成QList <Myclass> - パラメータ 'T

#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を宣言するためにしなければならないのですか?

答えて

3

コンパイラがそれを知るまで、MyClassという名前を使用することはできません。 XML_FilesにはXML_Filesの後になるまでMyClassを宣言していないので、その名前を使用することはできません。

ここで最も簡単な解決策は、宣言の順序を変更してMyClassXML_Filesの前に宣言することです。

+0

Ahh ...私はこれをGoogleで1〜2時間検索していますが、何も見つかりませんでした...私は決してそのソリューションはそれほど些細なものではないと思います。 @AlexとNathanOliverのおかげで、皆さん、ありがとうございました。あなたは最初にあなたは答えを受け入れています:) –

+0

@ErikŠťastnýいいえ問題は、助けてうれしいです。 – NathanOliver

1

これを簡単に修正するには、両方のクラスの順序を変更することです。しかし、望ましくない、または可能でない場合は、2番目の解決方法があります。

定義する前にMyclassを宣言してもかまいません。コンパイルが成功します。

#include <QList> 

class Myclass; 

class XML_Files 
{ 

public: 
    XML_Files(); 
    ~XML_Files(); 

protected: 
    QList<Myclass> m_Xmls; 

}; 


class Myclass 
{ 
// ... 
}; 
+0

ああ...私はこれをGoogleで1-2時間検索していますが、何も見つかりませんでした。 Alexと@ NathanOliverの皆さん、ありがとうございました。 –

関連する問題