【发布时间】:2012-07-14 09:01:50
【问题描述】:
我有课:
class IntegerVector:
{
IntegerVector operator * (const int scalar) const;
};
class RealVector:
{
RealVector(const IntegerVector &other);
RealVector operator * (const double scalar) const;
};
如何强制表达式:integer_vector*1.5 等同于 RealVector(integer_vector)*1.5 而不是现在的 integer_vector*int(1.5)?
编辑
顺便说一句,这些运算符有很多,所以定义RealVector IntegerVector::operator * (const double scalar) const 不是很令人满意。
【问题讨论】:
-
嗯。 Mb 使用 RealVector(integer_vector) * 1.5?
-
哈哈,当然,但是不,我的意思是隐式转换。 :-)
-
只有在IntegerVector中有运算符RealVector()时才能进行隐式转换...
-
换成IntegerVector算子如何*(RealVector real);其中实现可以控制实数到标量的转换
-
我错了。没有显式的构造函数就足够了。
标签: c++ type-conversion operator-precedence