2017-01-24 2 views
-3

追加のプロパティを持つクラスを拡張し、この新しいクラスに基本クラスオブジェクトを割り当てたいとしました。ここに私のサンプルコードは次のとおりです。C++ Qtの継承の基礎

class QExtFileInfoList: public QFileInfoList 
{ 
    public: 
    bool newProperty; 
} 
QDir var1 = "/abc/def"; 
QFileInfoList var2 = var1.entryInfoList();  // works 
QExtFileInfoList var3 = var1.entryInfoList(); // does not work 

コードが戻る:

conversion from 'QFileInfoList {aka QList<FileInfo>}' 
     to non-scalar type 'QElfFileInfoList' requested 

私はこの問題を解決することができますか?

+0

「entryInfoList」は何を返しますか? – Moira

+0

値で 'QFileInfoList'を返します。 'QFileInfoList QDir :: entryInfoList(フィルターフィルター= NoFilter、SortFlags sort = NoSort)const' – drescherjm

答えて

0

あなたは新しいクラスを定義しました。しかし、誰がそれらを作成していますか? QDirは、作成したクラスを作成しません。

心の中で3つの解決策があります

  1. は、あなたがの変換を求めるならば(これは自動的に変換しますQElfFileInfoListがちょうどQFileInfoList参照を取るためのコンストラクタを書くQElfFileInfoList
  2. にコンバータ機能QFileInfoListを書く
  3. 単一インスタンス)
  4. あなた自身のクラスを作成しているQDirから新しいクラスを派生させます。

この順番で選択します。