0

私はこのようなクラスを持っています:

template<char _character>
class Foo
{
    ...
public:
    static const char character = _character;
};

static を転送せずに、クラス外の _character パラメータにアクセスする方法はありますか? のようなものFoo::_character

4

2 に答える 2

1

パターン マッチングを使用できます。

template<typename T>
struct get_character;
template<char _character>
struct get_character<Foo<_character> > {
    static const char character = _character;
};

使用するには:

get_character< Foo<'a'> >::character
于 2012-11-27T00:31:53.160 に答える
1

簡単に言えば、いいえ、できません。

_characterはテンプレート パラメータであり、テンプレートをインスタンス化するまで不明です。

インスタンス化後_characterは、具体的なインスタンス化のメンバーではなくなりましたが、渡した char はそうです。

作成すると、クラス テンプレートのインスタンス化に使用されるテンプレート パラメーターに依存するchar データ メンバーstatic const char character = _character;作成されます。

インスタンス化されたクラス テンプレートから上記のデータ メンバーにアクセスできるようになりました。

typedef Foo<'c'> CFoo;
std::cout << CFoo::character << std::endl;

クラス テンプレートをインスタンス化すると、Foo<'c'>::_character存在しなくなります。

于 2012-11-27T00:36:21.500 に答える