継承できるテンプレート固有のタイプを定義するにはどうすればよいですか?

ギヨームD

私の質問は私が望むほど明確ではないかもしれません。説明させてください。抽象母クラスMと、子クラスC1、C2、... Cnがたくさんあります。それぞれの子で、次のようなテンプレートタイプを定義する必要があります。

class Child1 : public Mother
{
    public:
    typedef AnotherTemplateClass<Child1,int>         Type1_C1;
    typedef AnotherTemplateClass<Child1,bool>        Type2_C1;
    typedef AnotherTemplateClass<Child1,unsigned>    Type3_C1;
    void DoSomething(Type1_C1 a, Type2_C1 b, Type3_C1);
};

私は次のようなものを定義したいと思います:

class Mother
{    
    public:
    typedef AnotherTemplateClass<this,int>          Type1_M;
    typedef AnotherTemplateClass<this,bool>         Type2_M;
    typedef AnotherTemplateClass<this,unsigned>     Type3_M;
};

そしてこのタイプを使用するChild1で

class Child1 : public Mother
{
    void DoSomething(Type1_M a, Type2_M b, Type3_M c);
};

私はそれが不可能であることを知っています

error: invalid use of ‘this’ at top level

しかし、この問題に答えることができる構文はありますか?

それも可能ですか?

Jarod42

CRTPが役立つ可能性があります:

template <typename Derived>
class ChildCrtp : public Mother
{
    public:
    typedef AnotherTemplateClass<Derived,int>         Type1_C1;
    typedef AnotherTemplateClass<Derived,bool>        Type2_C1;
    typedef AnotherTemplateClass<Derived,unsigned>    Type3_C1;

    Possibly:
    //void DoSomething(Type1_C1 a, Type2_C1 b, Type3_C1);
};

その後

class Child1 : public ChildCrtp<Child1>
{
public:
    void DoSomething(Type1_C1 a, Type2_C1 b, Type3_C1);
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Cheetahテンプレートで継承を使用するにはどうすればよいですか?

分類Dev

テンプレートとユニオンを継承するにはどうすればよいですか?

分類Dev

Djangoテンプレートで継承されたコンテナをオーバーライドするにはどうすればよいですか?

分類Dev

Djangoテンプレートで継承されたコンテナをオーバーライドするにはどうすればよいですか?

分類Dev

タイプ `regex`の` match_pattern`を使用してelasticsearch動的テンプレートを定義するにはどうすればよいですか?

分類Dev

ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

分類Dev

ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

分類Dev

ユーザーがテンプレートタイプを決定できるようにするにはどうすればよいですか?

分類Dev

Angular 2テンプレートで変数を定義するにはどうすればよいですか?

分類Dev

テンプレートクラスを継承し、現在継承しようとしているクラスのテンプレート化されたサブクラスにタイプを設定できますか?

分類Dev

postgresでJSONのレコードタイプを定義するにはどうすればよいですか

分類Dev

可変個引数テンプレートの引数を保存できるクラスを定義するにはどうすればよいですか?

分類Dev

部分的なクラステンプレートの特殊化で継承を実装するにはどうすればよいですか?

分類Dev

タイプスクリプトで新しいタイプのモデルタイプを継承するにはどうすればよいですか?

分類Dev

aspnetboilerplate固有のテンプレートバージョンをダウンロードするにはどうすればよいですか?

分類Dev

テンプレートのプロパティバインディングに使用できるように、Angular 2でグローバル変数を定義するにはどうすればよいですか?

分類Dev

継承とテンプレートを使用してフレンドクラスを使用するにはどうすればよいですか

分類Dev

Windowsでアプリケーション固有のルーティングテーブルを設定するにはどうすればよいですか?

分類Dev

最初にEntityFramework Core 2.0コードでタイプごとのテーブル継承を作成するにはどうすればよいですか?

分類Dev

LLVMパスにプラットフォーム固有の関数定義を追加するにはどうすればよいですか?

分類Dev

このタイプのデータをgolangで定義するにはどうすればよいですか?

分類Dev

1つのエージェントタイプに対して事前定義されたレイアウトパターンの1つを設定するにはどうすればよいですか?(できればコードで)

分類Dev

テンプレートを使用するクラスから継承するときにメソッドをオーバーライドするにはどうすればよいですか?

分類Dev

テンプレートパラメータパックが関数の引数と一致するかどうかに基づいて、テンプレート関数の定義をゲートするにはどうすればよいですか?

分類Dev

名前空間のテンプレートで宣言されたフレンド演算子を定義するにはどうすればよいですか?

分類Dev

std :: getlineをテンプレートタイプにするにはどうすればよいですか?

分類Dev

モジュールのインポートとは別にタイプ定義をインポートするにはどうすればよいですか?

分類Dev

ランドスケープ固有のxmlレイアウトファイルを削除するにはどうすればよいですか?

分類Dev

Jenkins kubernetesプラグインを使用してポッド定義をテンプレート化するにはどうすればよいですか?

Related 関連記事

  1. 1

    Cheetahテンプレートで継承を使用するにはどうすればよいですか?

  2. 2

    テンプレートとユニオンを継承するにはどうすればよいですか?

  3. 3

    Djangoテンプレートで継承されたコンテナをオーバーライドするにはどうすればよいですか?

  4. 4

    Djangoテンプレートで継承されたコンテナをオーバーライドするにはどうすればよいですか?

  5. 5

    タイプ `regex`の` match_pattern`を使用してelasticsearch動的テンプレートを定義するにはどうすればよいですか?

  6. 6

    ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

  7. 7

    ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

  8. 8

    ユーザーがテンプレートタイプを決定できるようにするにはどうすればよいですか?

  9. 9

    Angular 2テンプレートで変数を定義するにはどうすればよいですか?

  10. 10

    テンプレートクラスを継承し、現在継承しようとしているクラスのテンプレート化されたサブクラスにタイプを設定できますか?

  11. 11

    postgresでJSONのレコードタイプを定義するにはどうすればよいですか

  12. 12

    可変個引数テンプレートの引数を保存できるクラスを定義するにはどうすればよいですか?

  13. 13

    部分的なクラステンプレートの特殊化で継承を実装するにはどうすればよいですか?

  14. 14

    タイプスクリプトで新しいタイプのモデルタイプを継承するにはどうすればよいですか?

  15. 15

    aspnetboilerplate固有のテンプレートバージョンをダウンロードするにはどうすればよいですか?

  16. 16

    テンプレートのプロパティバインディングに使用できるように、Angular 2でグローバル変数を定義するにはどうすればよいですか?

  17. 17

    継承とテンプレートを使用してフレンドクラスを使用するにはどうすればよいですか

  18. 18

    Windowsでアプリケーション固有のルーティングテーブルを設定するにはどうすればよいですか?

  19. 19

    最初にEntityFramework Core 2.0コードでタイプごとのテーブル継承を作成するにはどうすればよいですか?

  20. 20

    LLVMパスにプラットフォーム固有の関数定義を追加するにはどうすればよいですか?

  21. 21

    このタイプのデータをgolangで定義するにはどうすればよいですか?

  22. 22

    1つのエージェントタイプに対して事前定義されたレイアウトパターンの1つを設定するにはどうすればよいですか?(できればコードで)

  23. 23

    テンプレートを使用するクラスから継承するときにメソッドをオーバーライドするにはどうすればよいですか?

  24. 24

    テンプレートパラメータパックが関数の引数と一致するかどうかに基づいて、テンプレート関数の定義をゲートするにはどうすればよいですか?

  25. 25

    名前空間のテンプレートで宣言されたフレンド演算子を定義するにはどうすればよいですか?

  26. 26

    std :: getlineをテンプレートタイプにするにはどうすればよいですか?

  27. 27

    モジュールのインポートとは別にタイプ定義をインポートするにはどうすればよいですか?

  28. 28

    ランドスケープ固有のxmlレイアウトファイルを削除するにはどうすればよいですか?

  29. 29

    Jenkins kubernetesプラグインを使用してポッド定義をテンプレート化するにはどうすればよいですか?

ホットタグ

アーカイブ