我有以下代码草案:
template <class A, class B = B2>
class SM
{
A a;
f();
// .....
};
template <class A, class B>
SM<A,B>::f()
{
cout<< a <<" Using B"<<endl;
};
如何重载此功能的行为?
我想得到这种行为:
template <class A>
SM<A,B2>::f()
{
cout<< a <<" Using B2"<<endl;
};
答案 0 :(得分:0)
您必须在SM类中使用B类。所以你需要知道&#39; B&#39;在SM对象中。
template <class A, class B = B2>
class SM
{
A a;
B b;//the class B object.
f();
// .....
};
template <class A, class B>
SM<A,B>::f()
{
cout<< a <<" Using "<<typeid(b).name()<<endl;//use typeid
};