例如,如果我定义了一个点对象(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