我对赋值运算符有疑问。请看下面我的代码:
template<typename PARAM_TYPE, typename DATA_TYPE>
class Parameter : public boost::units::quantity<PARAM_TYPE, DATA_TYPE>
{
public:
Parameter<PARAM_TYPE, DATA_TYPE> & operator = ( const quantity<PARAM_TYPE, DATA_TYPE> & Q )
{
// ...
}
Parameter<PARAM_TYPE, DATA_TYPE> & operator = ( const Parameter<PARAM_TYPE, DATA_TYPE> & P )
{
// ... do something more than in assignment operator taking quantity
}
};
我的问题是使用 Parameter 类实例时。您可能知道boost::units::quantity
变量的操作物理单位。因此我必须使用所有来自boost::units::quantity
. 这样操作的结果又是数量。例如:
Parameter<si::length> P;
quantity<si::length> Q1( 1.0 * si::meter );
quantity<si::length> Q2 ( 1.0 * si::meter );
P = Q1 + Q2;
到目前为止一切顺利,使用了赋值运算符取数量。做非常相似的事情时会出现问题:
Parameter<si::length> P;
Parameter<si::length> P1( 1.0 * si::meter );
Parameter<si::length> P2 ( 1.0 * si::meter );
P = P1 + P2;
正如Parameter<>
派生的那样quantity<>
,似乎也使用了将数量作为参数的赋值运算符!
问题:有没有办法强制编译器在第二种情况下使用赋值运算符Parameter<>
作为参数?quantity<>:: operator +
非常感谢任何愿意提供帮助的人。干杯马丁