我应该定义一个接口,明确告知用户他/她应该实现哪些内容才能使用该类作为模板参数,或者让该编译器在未实现该功能时警告他?强制执行模板参数类的函数?
template <Class C1, Class C2>
SomeClass
{
...
}
C1类必须实现某些方法和运算符,编译器在使用它们之前不会发出警告。我应该依靠编译器来警告或确保我这样做:
Class C1 : public SomeInterfaceEnforcedFunctions
{
// Class C1 has to implement them either way
// but this is explicit? am I right or being
// redundant ?
}
你是多余的。如果你试图调用C1没有的方法,它不会被编译,那应该就足够了。 – 2010-11-02 18:37:48
@PigBen:我不同意。如果你只是把它留给编译器,用户会经常得到一个可怕的,无用的错误信息。通过一些自己执行需求的工作,你可以提高这一点。 – 2010-11-02 18:39:56
@Jerry - 这很公平。然而,在我看来,花时间学习理解错误信息会更好。它们不是无用的,只是很难破译。然后,可以将该技能应用于理解其他错误,例如错误使用STL时获得的错误。 – 2010-11-02 18:49:31