【发布时间】:2020-03-31 11:49:56
【问题描述】:
要初始化一个std::vector,我可以直接使用initializer_list,像这样:
std::vector<int> myVec = {1, 2, 3, 4};
如果我创建一个自定义列表类(它将包含许多项目),例如class customVector(为了简单起见,仅使用整数,我想我可以自己弄清楚如何使用模板来完成它,如果需要的话),我可以重载运算符'{',以使customVector 的实例可以在同一问题中初始化吗?这样我就可以写了
customVector myCustomVec = {1, 2, 3, 4}
【问题讨论】:
-
{不是运算符,因此不能重载。运营商是en.cppreference.com/w/cpp/language/expressions#Operators -
您可以做
vector所做的事情,并添加一个带有initializer_list参数的构造函数。 -
嗯,不,你不能重载
{运算符,因为{不是运算符。为您的类提供一个接受std::initializer_list<something>参数的构造函数,其中something是对该类有意义的类型。 -
在旁注中,阅读XY problem。 (你的问题是一个。)
标签: c++ class operator-overloading