2017-03-26 110 views
0

我有一個類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 == -1,setValues()尚未在characterData對象上調用。

後來在我的代碼中,我有一個characterData k,它只被初始化,setValues()還沒有被調用,因此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重置爲「空」狀態?

+0

如果他們用'n == -1'調用'setValues'會怎麼樣? –

+0

@ M.M'n'來源於'list'的大小。正如問題所述,'n'不會低於0。 – gator

回答

5

只需使用一次默認的構造函數:

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

雖然我不會說這是一個特別大的設計。

+0

我同意這不是很好的設計,但我正在創造一個改進的骨幹。我需要一種方法來創建一個「空的」characterData,並將某些東西重置爲空的「characterData」。 – gator

4

添加一個clear功能可能嗎?

void clear() { 
     num = -1; 
    }