我有一个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));

10-07 13:01
查看更多