"重置"对象为默认值; 回忆构造函数?

gat*_*tor 0 c++ constructor object

我有一个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
        }
};
Run Code Online (Sandbox Code Playgroud)

我这样做,所以characterData我的代码中可以有一个"空" .我的思维过程是,如果num == -1,setValues()没有被称为上characterData对象.

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

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

characterData k;
// some assignments happen, k = something else
k = new characterData(); // reset k
Run Code Online (Sandbox Code Playgroud)

以上不起作用.我需要重置k这样的k.num == -1.没有成员setter/mutator函数可以允许我改变num:我的想法是回忆构造函数,但这不起作用.

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

小智 5

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

  characterData c;
  c.setvalues( ... );
  c = characterData();
Run Code Online (Sandbox Code Playgroud)

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