避免在C ++中转换运算符参数

时间:2013-11-30 01:25:27

标签: c++ casting operator-keyword

假设有一个模板化类,重载算术运算符执行非常基本的操作(例如,对整数),这样我就可以

T a,b,c;
// ...
c=a+b;

有没有办法可以获得指令

T d=2*a;

具有相同的含义
T d=(T)2*a;

没有明确的演员?

1 个答案:

答案 0 :(得分:3)

是:创建一个隐式构造函数,为int提取一个T参数,并为operator*提供一个重载T,并为一个T提供一个空闲运算符} S:

struct T
{
    T(int);

    T operator*(T const &) const;

    friend T operator(T const & a, T const & b) { return a.operator*(b); }

    // ...
};