(重新)命名std :: pair成员中断初始化

时间:2017-05-16 18:44:04

标签: c++ c++11 subclassing std-pair

有以下类型:

typedef pair<double, double> MinMax; ///< first - Min, second - Max

并使用它进行初始化工作正常:

const MinMax mInMinMax[FunctionCount] = {{-1, 1}, {-1, 1}, {0, 1}};

但是如果我为了方便我是子类:

///< first - Min, second - Max
struct MinMax : public pair<double, double>
{
    double& Min() { return first; }
    double Min() const { return first; }
    double& Max() { return second; }
    double Max() const { return second; }
};

编译失败,错误:

  

error: could not convert ‘{-1, 1}’ from ‘<brace-enclosed initializer list>’ to ‘const MinMax’ const MinMax mInMinMax[FunctionCount] = {{-1, 1}, {-1, 1}, {0, 1}};

是否可以正确地继承pair<double, double>

1 个答案:

答案 0 :(得分:3)

基类的构造函数不是&#34;继承&#34;自动。 您的Min / Max功能与此问题无关:

struct MinMax : public pair<double, double>
{
   using pair<double, double>::pair;
   ...
};