Как вызвать функцию-член родительской структуры при перегрузке оператора дочерней структурыC++

Программы на C++. Форум разработчиков
Anonymous
Как вызвать функцию-член родительской структуры при перегрузке оператора дочерней структуры

Сообщение Anonymous »

Я пишу консольную игру, требующую от меня напечатать некоторый текст в определенной позиции с необязательным цветом в терминале.
поэтому я объявляю структуру для реализации печати текста:

Код: Выделить всё

struct Text{

COORD pos;
int color;
string text;

void redraw(){
...
}
}
Проблема в том, что если я хочу изменить цвет или положение текстовой переменной на моем терминале, мне нужно использовать

Код: Выделить всё

Tip.color = 3; Tip.redraw();
(при условии, что я объявляю текстовую переменную с именем Tip)
Этот фрагмент кода повсюду в моей программе и выглядит глупо.
Есть ли способ неявно вызвать функцию redraw(), пока я назначаю переменную структуры?
(например, используйте только Tip.color = 3; можно перерисовать текст в консоли в цвете 3)
Думаю, макрос может решить эту проблему, но я не знаю, как это реализовать.
В настоящее время я пробовал определить Set_color();Set_pos(),Set_text()соответственно в структуре Text;
Я пытался объявить новый тип pos, color, text в структуре Text и перегрузить оператор присваивания, но я не могу устранить ошибку вызова redraw() во время перегрузки:

Код: Выделить всё

struct Text {
struct pos{
int x, y;
void operator = (const pos & Temp){
this->x = Temp.x;
this->y = Temp.y;
redraw();
}
};
void redraw(){
//draw the text in the terminal
}
};
и g++ сообщил мне об ошибке: невозможно вызвать функцию-член void Text::redraw() без перерисовки объекта();

Подробнее здесь: https://stackoverflow.com/questions/786 ... structs-op

Вернуться в «C++»