template <class T>
class A
{
private:
T m_var;
public:
operator T () const { return m_var; }
........
}
template<class T, class U, class V>
const A<T> operator+ (const U& r_var1, const V& r_var2)
{ return A<T> ( (T)r_var1 + (T)r_var2 ); }
Run Code Online (Sandbox Code Playgroud)
这个想法是为情况重载+运算符一次(而不是三次):数字+ A,A +数字,A + A(其中数字类型为T,与m_var相同).一个有趣的例子是m_var是例如int并且r_var是long.
任何帮助将受到高度赞赏.谢谢.