类中的赋值运算符派生boost :: units :: quantity

时间:2016-06-01 06:54:41

标签: c++ inheritance boost-units

我的赋值运算符有问题。请看下面的代码:

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 +作为参数的赋值运算符?

非常感谢愿意提供帮助的任何人。干杯马丁

0 个答案:

没有答案