2017-11-28 8 views
1

私は理解したいと思います:C++のテンプレートクラスでリファクタリングする方法はありますか?私は基本クラスまたは特殊なテンプレートの仮想関数を素早く挿入したい。Qt CreatorのリファクタリングとC++のテンプレート

クラスが十分に大きくない場合は問題ありません。しかし、あなたが上書きして特化する必要がある10の方法がある場合、それは日常的でエラーが発生しやすくなります。

は例えば、私はそのコードを書くよりも、このコード

template <typename T> 
class MyTemplateInterface 
{ 
public: 
    virtual void DoWork() = 0; 
}; 

を持って

template <typename T> 
class MyTemplateClass : public MyTemplateInterface<T> 
{ 
public: 
    MyTemplateClass() {} 
}; 

そして、何私が取得したいことはある

template <typename T> 
class MyTemplateClass : public MyTemplateInterface<T> 
{ 
public: 
    MyTemplateClass() {} 
    void DoWork() override 
    { 

    } 
}; 
template<> 
void MyTemplateClass<int>::DoWork() 
{ 
    // specialized template 
} 

P.S.こと私の壊れた英語に申し訳ありません

+0

https://doc.qt.io/archives/qq/qq15-academic.html – Taz742

+0

ありがとうございました!この記事では、Qtはテンプレートをサポートしていませんが、純粋なC++コードを使用しています。それでQtがそれをサポートしていないと、Qt Creatorもそれをしないと思いますか?多分この問題を解決するもう一つの簡単な方法がありますか? –

答えて

1

IDEに適切な仮想メソッドを生成させたい場合、これはQt Creatorで可能です。私はどのバージョンからこのオプションが利用できるか分からない。私はQt 4.1.0を使用しています。

指定したコードを使用すると、派生クラス名を右クリックして、下の画像のようにRefactor > Insert Virtual Functions of Base Classesを選択できます。

enter image description here

次に、あなたがクラス内部または外部で生成される唯一の宣言または定義をするかどうかの異なるオプションを選択することができます。

これはうまくいけばあなたの質問の一部に答えます。しかし、私は現在、専門分野の半自動生成のための方法があるかどうかはわかりません。

+0

ありがとう!私はQt Creator 4.3.1を使用していますが、テンプレートを使用して "Insert Virtual Function in Base Classes"はありませんが、テンプレートなしでその機能を積極的に使用しています。確かに、それは私の質問の部分的な答えです。 –

関連する問題