Поднятие скрытой функции в C++
Новый метод в потомке с тем же именем скрывает все одноименные перегрузки базы, даже если сигнатуры различаются.
Запись using Base::func в теле потомка поднимает скрытые перегрузки обратно рядом с локальной версией. Запишем базу с двумя перегрузками, добавим строковую версию в потомке и вызовем все три варианта:
┌pPathX="main.cpp"
#include <iostream>
#include <string>
class Logger {
public:
void emit(int code) {
std::cout << code << "\n";
}
void emit(double value) {
std::cout << value << "\n";
}
};
class FileLogger : public Logger {
public:
using Logger::emit;
void emit(const std::string& text) {
std::cout << text << "\n";
}
};
int main() {
FileLogger log;
log.emit(7);
log.emit(0.5);
log.emit("ok");
return 0;
}
В Scale задайте перегрузки
set для int и
double. В FineScale
добавьте set для float,
поднимите базовые через using
и вызовите все три.