コンパイラにテンプレート化された構造体を認識させる方法は?

Sanchises

私はCodeReview.SEで私の質問に与えられ答えを実装しようとしています基本的に、テンプレート化された構造体のいくつかの静的変数にアクセスしたいと思います。次のサンプルコードについて考えてみます。

#include <iostream>
using namespace std;

template<const int idx>
struct Data{
    static int bar;
};

template<const int idx>
int getBar(){
    return Data<idx>::bar;
}

int main() {
    const int n = 2; // Arbitrary number
    cout << getBar<n>();
    return 0;
}

コンパイラは、私Data<n>がプログラムで使用できるようにしたいことを認識しませんgetBar<n>が、エラーメッセージから明らかなように、初期関数を問題なく認識します。

undefined reference to `Data<2>::bar'

テンプレート化された構造体も利用できるようにコンパイラーに指示するにはどうすればよいですか?

AndyG

静的クラス変数にはメモリ割り当てを指定する必要があります。これを追加:

template<const int idx>
int Data<idx>::bar = 0;

デモ

編集:NathanOliverによってリンクされた複製が頭に当たるが、テンプレート化されていないクラスの場合。この回答は、クラスがテンプレート化されている場合の構文を示しています。わずかな違いですが、それでも便利です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

構造体のテンプレート化されたtypefefを構造体に含める方法

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

テンプレート化された構造体の<<演算子をオーバーライドする

分類Dev

アラインメントを失うことなく、再帰的にテンプレート化された構造体を最適にパッキング

分類Dev

Golangネストされた構造体をテンプレート化する方法は?

分類Dev

C ++のコンストラクターを使用したテンプレート化されたtypedef構造体

分類Dev

std :: enable_ifを使用してg ++ / clang ++で明示的に特殊化されたテンプレート構造体をコンパイルできない

分類Dev

可変個引数テンプレートパラメータで構造体を使用すると、2つのテンプレートが同時にインスタンス化されるのはなぜですか?

分類Dev

GoのRevelテンプレートにネストされた構造体のスライスを渡す

分類Dev

テンプレート化された構造体をコンストラクター引数として使用する

分類Dev

テンプレート化された変換演算子でこの構造を明確にする方法は?

分類Dev

テンプレート化されたクラスのメンバー構造体のostreamをオーバーロードする方法

分類Dev

テンプレート化されたテンプレートパラメータU <T>はconst修飾子を認識しません

分類Dev

C ++の概念:「concept」を使用してテンプレート化された構造体のプロパティを確認するにはどうすればよいですか?

分類Dev

WCF サービスには、構造体を受け入れるパラメーター化されたコンストラクターがあります。

分類Dev

この例に従ってテンプレート化された構造体を構築するにはどうすればよいですか?

分類Dev

テンプレート化された親クラスで定義された構造体の初期化

分類Dev

テンプレート化された関数から構造体ポインタを返す

分類Dev

テンプレート化された構造体またはクラスと組み合わせた概念の正しい構文は何ですか?

分類Dev

テンプレート化された構造体オブジェクトポインタを返すのに問題がある

分類Dev

テンプレート化された構造体の部分的な特殊化を削除する

分類Dev

ネストされた構造体とテキスト/テンプレートパッケージを使用するときに、印刷された{}括弧を削除

分類Dev

構造体タイプがテンプレート化されている構造体メンバーを埋める

分類Dev

テンプレート化された再帰的なPOD構造体の初期化

分類Dev

テンプレート化された構造体の追加を実行するにはどうすればよいですか?

分類Dev

クラステンプレート内にネストされた構造体の非静的メンバー `sizeof`を取得することは違法ですか?

分類Dev

condaにpipでインストールされたPythonパッケージを認識させる方法は?

分類Dev

コントローラは渡されたプロパティを認識しません

Related 関連記事

  1. 1

    構造体のテンプレート化されたtypefefを構造体に含める方法

  2. 2

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  3. 3

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  4. 4

    テンプレート化された構造体の<<演算子をオーバーライドする

  5. 5

    アラインメントを失うことなく、再帰的にテンプレート化された構造体を最適にパッキング

  6. 6

    Golangネストされた構造体をテンプレート化する方法は?

  7. 7

    C ++のコンストラクターを使用したテンプレート化されたtypedef構造体

  8. 8

    std :: enable_ifを使用してg ++ / clang ++で明示的に特殊化されたテンプレート構造体をコンパイルできない

  9. 9

    可変個引数テンプレートパラメータで構造体を使用すると、2つのテンプレートが同時にインスタンス化されるのはなぜですか?

  10. 10

    GoのRevelテンプレートにネストされた構造体のスライスを渡す

  11. 11

    テンプレート化された構造体をコンストラクター引数として使用する

  12. 12

    テンプレート化された変換演算子でこの構造を明確にする方法は?

  13. 13

    テンプレート化されたクラスのメンバー構造体のostreamをオーバーロードする方法

  14. 14

    テンプレート化されたテンプレートパラメータU <T>はconst修飾子を認識しません

  15. 15

    C ++の概念:「concept」を使用してテンプレート化された構造体のプロパティを確認するにはどうすればよいですか?

  16. 16

    WCF サービスには、構造体を受け入れるパラメーター化されたコンストラクターがあります。

  17. 17

    この例に従ってテンプレート化された構造体を構築するにはどうすればよいですか?

  18. 18

    テンプレート化された親クラスで定義された構造体の初期化

  19. 19

    テンプレート化された関数から構造体ポインタを返す

  20. 20

    テンプレート化された構造体またはクラスと組み合わせた概念の正しい構文は何ですか?

  21. 21

    テンプレート化された構造体オブジェクトポインタを返すのに問題がある

  22. 22

    テンプレート化された構造体の部分的な特殊化を削除する

  23. 23

    ネストされた構造体とテキスト/テンプレートパッケージを使用するときに、印刷された{}括弧を削除

  24. 24

    構造体タイプがテンプレート化されている構造体メンバーを埋める

  25. 25

    テンプレート化された再帰的なPOD構造体の初期化

  26. 26

    テンプレート化された構造体の追加を実行するにはどうすればよいですか?

  27. 27

    クラステンプレート内にネストされた構造体の非静的メンバー `sizeof`を取得することは違法ですか?

  28. 28

    condaにpipでインストールされたPythonパッケージを認識させる方法は?

  29. 29

    コントローラは渡されたプロパティを認識しません

ホットタグ

アーカイブ