在模板编程中有两种方法可以定义类型特征或行为。
一种是在类内部定义
class MyClass
{
public:
typedef ... DialogType;
static string type() {...}
...
};
另一个在类外定义
class MyClass {...};
template<class T> struct Dialog;
template<> struct Dialog<MyClass> { typedef ... Type;}
template<class T> string type();
template<> string type<MyClass>() { ... }
哪种方式更好,为什么> 或者还有其他更好的方式吗?