サブクラスで非テンプレート クラスのテンプレート メソッドを特殊化しようとしています。
// .h ファイル
class MyWriter {
public:
template<typename T>
void test(const T & val) {
std::cout << val << "\n";
}
};
// .cpp ファイル
class MyType {
public:
MyType(int aa, double dd) : a(aa), d(dd) {}
int a;
double d;
};
class MyWriterExt : public MyWriter {
public:
template<> void test(const MyType &val) {
test(val.a);
test(val.d);
}
};
int main() {
MyWriterExt w;
w.test(10);
w.test(9.999);
w.test(MyType(15, 0.25));
return 0;
}
しかし、私はエラーを受け取ります:
Error 1 **error C2912**: explicit specialization;
'void MyWriterExt::test(const MyType &)' is not a specialization of a function
template \testtemplate.cpp 30
MyWriter クラスを拡張してユーザー定義クラスをサポートするにはどうすればよいですか?