2017-12-01 16 views
0

私はC++のテンプレートコードではとても新しいです。次の質問について私に教えてください。 クラスのメンバ関数を定義するために(非型パラメータのみを持つ)関数テンプレートを使用する場合は、そのクラスのテンプレートも定義する必要があります。言い換えれば、C++は、ユーザが、テンプレート化されていないクラス内のメンバ関数テンプレート(非型パラメータのみを持つ)を定義できるようにします。たとえば、非タイプのパラメータを持つ関数テンプレート

class foo{ 

template <int vecsize> 
void bar(std::array<int, vecsize> vec); 
}; 

ありがとうございます。

+3

非テンプレートクラスのテンプレートのメンバーを持っていることは完全にOKであるの終わりにセミコロンを逃しています。テンプレートパラメータの種類は関係ありません。つまり、std :: vectorにはsizeパラメータがありません。 –

+0

おそらく 'std :: array 'を意味しましたか? – Caleth

+0

私の質問にお答えいただきありがとうございます。私はそれが意味をなされるように自分の投稿を更新しました。 – bin

答えて

0

はい、メンバ関数テンプレートでは、親構造体をテンプレート化する必要はありません(ただしテンプレートはもちろん可能性があります)。

std::vectorの代わりにstd::arrayが必要です(ndとしてstd :: vectorのサイズパラメータはありません)。

そして、あなたはクラス定義

+0

申し訳ありません。はい、あなたは正しいです、私は使用する必要があります。 &std :: array – bin

関連する問題