"Reset"反对默认值;还记得构造函数吗?

"Reset" object to default values; recall constructor?

本文关键字:构造函数 还记得 默认值 Reset      更新时间:2023-10-16

我有一个带有构造函数的类characterData

class characterData() {
    private:
        int position[2];
        vector<vector<int> > pixelData;
        int num;
    public:
        characterData() {
            num = -1;
        }
        void setValues(int p[2], vector<vector<int> > v, int n) {
            position[0] = p[0];
            position[1] = p[1];
            pixelData = v;
            num = n; // if setValues() is called, n will always > -1
        }
};

我这样做是为了在我的代码中有一个"空"characterData。我的思考过程是如果num == -1setValues()没有在characterData对象上调用。

在我的代码后面,我有一个仅初始化的characterData ksetValues()尚未调用它,所以k.num == -1.

最终,我更改了k的值,但希望将其"重置"为原始形式。

characterData k;
// some assignments happen, k = something else
k = new characterData(); // reset k

以上是行不通的。我需要重置k以便k.num == -1.根本没有成员 setter/mutator 函数可以让我更改num:我的想法是召回构造函数,但这不起作用。

如何将k重置为"空"状态?

只需再次使用默认构造函数:

  characterData c;
  c.setvalues( ... );
  c = characterData();

虽然我不会说这是一个特别伟大的设计。

添加一个clear函数?

    void clear() {
        num = -1;
    }