例如,如果我定義了一個點對象(2,3),然後使用默認的構造函數來聲明另一個會導致點對象(2,3)的點。然後,如果我要創建另一個點對象(5,6),則默認構造函數將更改爲生成點對象(5,6)。這裏是我的嘗試:如何定義一個創建前一個對象的默認構造函數
point.h
#ifndef POINT_H
#define POINT_H
int point::previousX = 0;
int point::previousY = 0;
int defualtX = previousX;
int defualtY = previousY;
struct point{
point(int newX = defualtX, int newY = defualtY)
: x(previousX = newX), y(previousY = newY){;};
~point(void){;};
static int previousX;
static int previousY;
int x, y;
};
#endif//POINT_H
有這碼一個明顯的問題。在「先前」和「不確定」變量之前沒有定義類別點;因此,previousX和previousY的定義將不起作用。我可以在類定義下面移動「defualt」和「previous」變量,但是這個point構造函數不起作用。
將'int point :: previousX = 0;'和'int point :: previousY = 0;'移入單獨的翻譯單元或在類聲明中初始化它們。 –
可怕的解決方案,與這種方法找到錯誤運氣好。 – Slava
聽起來有點像XY-問題,爲什麼你想這樣做? – WorldSEnder