有以下类型:
typedef pair<double, double> MinMax; ///< first - Min, second - Max
并且用它初始化工作正常:
const MinMax mInMinMax[FunctionCount] = {{-1, 1}, {-1, 1}, {0, 1}};
但是,如果为了方便我将 pair 子类化:
///< 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>
正确吗?
最佳答案
基类的构造函数不是自动“继承”的。
您的 Min
/Max
函数与此问题无关:
struct MinMax : public pair<double, double>
{
using pair<double, double>::pair;
...
};
关于c++ - (Re)named std::pair 成员中断初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009255/