我有一个MyClass
类和另一个保存MyClass
数组的类,如下所示:
class MyClass {
int a;
float b;
void SetInt(int value)
{
a = value;
}
void SetFloat(float value)
{
b = value;
}
}
class MyClassArray {
std::vector<MyClass> classList;
}
创建新的
MyClass
,在MyClassArray
中插入对象并调用方法以在其中存储值的更简单方法是什么?我可以只创建一个临时
MyClass
并将其插入到向量中,在一条语句中调用该函数吗?喜欢:classList.push_back(MyClass().SetInt(21));
classList.push_back(MyClass().SetFloat(1.23));
那有效吗?
顺便说一句:在
vector
中,我需要一个在MyClass
上设置21
的对象a
和在1.23
上设置b
的另一个对象,这就是为什么我不对a
使用初始化器的原因和b
。 最佳答案
您可以使用chaining
:
class MyClass {
int a;
float b;
public:
MyClass& Set(int value) { a = value; return *this; }
MyClass& Set(float value) { b = value; return *this; }
};
这样可以实现以下功能:
MyClass a;
a.Set(1).Set(1.5f);
并且:
vector<MyClass> vec;
vec.push_back(MyClass{}.Set(3));