struct Puzzle
{
char Map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
Puzzle(char puzzle[5][6],int n);
Puzzle(const Puzzle& Original);//пока не реализован
void DoMoving(char sequence[]);
void print();
};
Копирующий конструктор
Код:
Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
Цитата:
Originally posted by solovey
Имеется класс
Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
Имеется класс
Код:
struct Puzzle
{
char Map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
Puzzle(char puzzle[5][6],int n);
Puzzle(const Puzzle& Original);//пока не реализован
void DoMoving(char sequence[]);
void print();
};
{
char Map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
Puzzle(char puzzle[5][6],int n);
Puzzle(const Puzzle& Original);//пока не реализован
void DoMoving(char sequence[]);
void print();
};
Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
Надо. Так как, в конечном счете, Map у обоих экземпляров класса будут ссылаться на одну и ту же область памяти.
Цитата:
Originally posted by Sagittarius
Надо. Так как, в конечном счете, Map у обоих экземпляров класса будут [color=RED]ссылаться на одну и ту же область памяти.[/color]
Надо. Так как, в конечном счете, Map у обоих экземпляров класса будут [color=RED]ссылаться на одну и ту же область памяти.[/color]
Что нежелательно.
Цитата:
Originally posted by solovey
Имеется класс
Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
Имеется класс
Код:
struct Puzzle
{
char Map[5][5];
...
};
{
char Map[5][5];
...
};
Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
При желании. Класс не содержит указателей, поэтому никакого указания на один и тот же участок памяти не будет.
Цитата:
Originally posted by Mongoose
При желании. Класс не содержит указателей, поэтому никакого указания на один и тот же участок памяти не будет.
При желании. Класс не содержит указателей, поэтому никакого указания на один и тот же участок памяти не будет.
Код:
char Map[5][5]
Разве Map не будет char ** ?
Цитата:
Originally posted by solovey
Разве Map не будет char ** ?
Код:
char Map[5][5]
Разве Map не будет char ** ?
Нет. Это в конечном счете char[25], точнее char[5][5];
Код:
struct Puzzle
{
char map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
};
Puzzle a;
Puzzle b;
strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");
{
char map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
};
Puzzle a;
Puzzle b;
strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");
Цитата:
Originally posted by Mongoose
Нет. Это в конечном счете char[25], точнее char[5][5];
Нет. Это в конечном счете char[25], точнее char[5][5];
Код:
struct Puzzle
{
char map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
};
Puzzle a;
Puzzle b;
strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");
{
char map[5][5];
bool hasFinalConf;
int blankX;
int blankY;
int number;
};
Puzzle a;
Puzzle b;
strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");
спасибо большое :)