我正在制作自己的课程,我希望能够像标题一样启动它。
a = {x, y};
我无法找到任何指示我如何做到这一点。
答案 0 :(得分:5)
假设您确实希望能够以这种方式分配(而不是初始化),则需要重载operator=
,但其参数类型完全取决于大括号中的列表所代表的内容。
例如,如果您总是要传递一对值,那么您可以operator=
重载,需要std::pair
:
A& operator=(std::pair<int, int>);
这可以这样调用:
A a;
a = {5, 3};
如果您希望能够传递任意长度列表,可以将参数类型设为std::initializer_list
:
A& operator=(std::initializer_list<int>);
现在以下所有情况都可以:
a = {};
a = {1, 2};
a = {5, 3, 5, 2, 3};
答案 1 :(得分:1)
从C ++ 11开始,您可以通过使用 std :: initializer_list 模板类作为参数创建构造函数来实现,并且可以重载 operator = 类似的方式。我不知道C ++ 03或C ++ 98中有什么技巧可以做到这一点。
来自维基百科的Copypasta:
class SequenceClass {
public:
SequenceClass(std::initializer_list<int> list);
};