テンプレートの2つの引数、Type1
およびType2
が必要なテンプレートクラス(Test2
)を作成しようとしています。 2番目の引数は2つのテンプレート引数(TypeA
とTypeB
)をとるテンプレート化されたクラスであることも知られています。 Type1
とType2
のオブジェクトを取るテンプレートテンプレートの引数を使用してばかげたエラーを取得する
- ワン:
は今、
Test2
のオブジェクトを構築するために、私は、ユーザーがコンストラクタの2種類のいずれかを使用することができるようにしたいです。 Type1
、TypeA
およびTypeB
のオブジェクトを取るもの。私は多くのことを試してみましたが、私は本当に好き不条理エラーが出#include <iostream> template<class TypeA, class TypeB> struct Test { TypeA t1obj; TypeB t2obj; Test(const TypeA& t1, const TypeB& t2) : t1obj(t1), t2obj(t2) {std::cout<<"Test::Type1, Type2\n";} }; template<class Type1, template<typename TypeX, typename TypeY> class Type2 > struct Test2 { Type1 t1obj; Type2<typename TypeX, typename TypeY> t2obj; //Line 17 Test2(const Type1& t1, const Type2<typename TypeX, typename TypeY>& t2) //Line 20 : t1obj(t1), t2obj(t2) { std::cout<<"Test2::Type1, Type2\n";} Test2(const Type1& t1, const TypeX& x, const TypeY& y) : t1obj(t1), t2obj(x,y) { std::cout<<"Test2::Type1, X, Y\n";} }; int main() { Test<int, char> obj1(1,'a'); Test2<int, Test<int, char> > strangeobj1(10,obj1); Test2<int, Test<int, char> > strangeobj2(1,2,'b'); }
:
は、私は次のコードを書いたライン17上の
wrong number of template arguments (1, should be 2)
と20
_first_エラーメッセージを必ず投稿してください。残りは偽であるかもしれません。コード内にその行を示してください。 – sbi
@sbi:私が言及したエラーは私が得る最初のエラーです。 –
あなたの説明からは分かりませんでしたので、私はそれに言及すると思いました。 – sbi