是否可以使用运算符进行隐式构造?
就像这个例子(当然行不通):
class myFoo {
public:
double x, y;
myFoo(double, double);
void operator [] (myFoo);
};
int main() {
myFoo f1(0.0, 1.1);
f1[ {9.9, 10.0} ]; /// or whatever syntax to use, does not work
f1.operator[] ( {9.9, 10.0} ); /// works !
}
最佳答案
C++11 允许将初始化列表传递给重载的 operator []
(请参阅 13.5.5)。
你需要这样的东西
void operator[](std::initializer_list<double>);
这将与 f1[ {9.9, 10.0} ];
的原始语法相匹配。
关于c++ - 运算符重载中的显式构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755376/