Я сейчас играю в судоку на с ++.Для этого я определил много классов, включая class Pos
для позиции и class Error
для поддержки ошибок.
Теперь в class Pos
,
class Pos {
int x;
int y;
public:
Pos();
Pos(Pos const&);
Pos(int,int);
void setPos(int,int);
void setx(int);
void sety(int);
int getx() const ;
int gety() const ;
string getPosReport();
virtual ~Pos();
};
Что ясделал: Я ограничил значение x и y, чтобы оно лежало между 0-9, написав setx
и sety
как,
void Pos::setx(int x){
if((x < 0) & (x > 9))
throw Exception("Invalid Position");
else
this->x = x;
}
void Pos::sety(int y){
if((y < 0) & (y > 9)){
throw Exception("Invalid Position");
}
else
this->y = y;
}
Моя проблема: Как Pos()
должен быть определен.
То, что я работал:
Удаление конструктора по умолчанию, не помогло мне, потому что,
class Error {
string errmsg;
Pos pos1,pos2; // Pos() must be called!! default constructor cannot be removed!
bool isError;
// ......
}
Я могу инициализировать x и y в -1 в Pos()
, но я чувствую, что это приведет к нестабильности в моем коде.
Я могу иметь int* x
и int* y
в class Pos
такое, что у меня может быть x = y = NULL, но я чувствую, что указатели сделают мой код относительно сложным, чем сейчас.
так что будет лучше, если кто-нибудь даст решение, стимулирующее сценарийкак х = у = н / д (не применимо)