Как вызвать функцию-член родительской структуры при перегрузке оператора дочерней структуры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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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