"复位"对象为默认值;回忆构造函数?

时间:2017-03-26 21:04:26

标签: c++ object constructor

我有一个带有构造函数的类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
        }
};

我这样做,所以我可以有一个&#34;空&#34;我的代码中characterData。我的思维过程是num == -1setValues()对象上没有调用characterData

稍后在我的代码中,我有一个characterData k,它只是初始化,setValues()尚未被调用,所以k.num == -1

最终我更改k的值,但希望&#34;重置&#34;它的原始形式。

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

上述方法无效。我需要重置k k.num == -1。没有成员setter / mutator函数可以让我完全改变num:我的想法是回忆构造函数,但这不起作用。

如何将k重置为&#34;空&#34;状态?

2 个答案:

答案 0 :(得分:5)

再次使用默认构造函数:

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

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

答案 1 :(得分:4)

可能添加clear功能吗?

    void clear() {
        num = -1;
    }