2017-08-15 19 views
0

テンプレート化されたメソッドをテンプレート化されたクラスに追加しようとしています。私はthis答えたが、構文は動作していません。testerという2番目のメソッドを追加しました。これはテンプレート化したいものです。これは私が、私はこれは私が私はこのエラーを取得していますか私は間違っているかもしれないもの理由についてテンプレート化されたクラス内でテンプレート化されたメソッドを宣言する

main.cpp:20:31: error: non-type partial specialization 'tester<v>' is not allowed 
void foo<t,u>::tester<v>(v lhs) { 

任意の提案を得る誤りである方法testerのエラーを取得しています

template <typename t,typename u> 
struct foo { 

    void test(); 

    template<typename v> 
    void tester(v lhs); 
}; 

template<typename t,typename u> 
void foo<t,u>::test() { 
    std::cout << "Hello World" ; 
} 

template<typename t,typename u> 
template<typename v> 
void foo<t,u>::tester<v>(v lhs) { 
    std::cout << "Hello world " << lhs ; 
} 

int main() 
{ 
    foo<int,int> t; 
    t.test(); 
    t.tester<int>(12); 
} 

持っているものです?以下の修正コードで

+0

あなたは 'テスター'のために特化しようとしている場合は、 '型名v'を削除しても' lhs'パラメータ – KayEss

+0

ため 'int'を使用メソッドのテスターをテンプレート化できるかどうか確認したいと思います。後で 'lhs'を' string'型にしたいのであればどうしますか? –

+0

それで部分的に特化しようとしていないので、なぜ 'tester 'ではなく 'tester 'を持っていますか? – KayEss

答えて

1

コメントインライン:

#include <iostream> 

template <typename t,typename u> 
struct foo { 

    void test(); 

    template<typename v> 
    void tester(v lhs); 
}; 

template<typename t,typename u> 
void foo<t,u>::test() { 
    std::cout << "Hello World" ; 
} 

/* 
* change made to this template function definition 
*/ 
template<typename t,typename u> 
template<typename v> 
void foo<t,u>::tester(v lhs) { 
    std::cout << "Hello world " << lhs ; 
} 

int main() 
{ 
    foo<int,int> t; 
    t.test(); 
    t.tester<int>(12); 
} 
関連する問題