Извините, если я не знаю правильного слова для того, чего я пытаюсь достичь.
По сути, у меня есть объект обработчика событий, который имеет только один член. Участник является объектом Stage.
Когда обработчик событий получает событие, я хочу, чтобы он просто использовал объект stage для вызова соответствующего метода. Например:
Event event; //this event is not part of my code, but rather the library I'm using.
Stage s; // my custom class object
EventHandler event_handler; //also my custom class object
event_handler.stage = &s;
if(event == SHUTDOWN) {
event_handler.stage->handle_shutdown();
}
Итак, что я пытаюсь сделать, так это то, что со временем у моей программы будут отдельные области действия, и я хочу, чтобы у каждой области был доступ к обработчику событий, чтобы они могли делать что-то вроде:
void some_other_scope(EventHandler* eh) {
Stage* some_new_stage = new Stage(...);
eh->stage = some_new_stage;
}
Таким образом, исходный код события остается прежним, и обработчик события будет вызывать handle_shutdown для объекта, отличного от того, который он первоначально собирался.
Итак, я хочу перегрузить метод handle_shutdown, чтобы его можно было реализовать по-разному. Я знаю, как работает базовая перегрузка, это можно сделать, указав разные параметры, но есть ли способ получить разные определения одного и того же метода класса на основе файла, в котором был создан объект?
Я надеялся получить несколько файлов, каждый с собственной функцией some_other_scope (), и каждый файл может переопределять метод handle_shutdown для выполнения различных задач в зависимости от потребностей этого файла.
Я уверен, что есть способ сделать то, что я хочу, я просто не знаю, какие слова использовать.