Если у меня есть перегруженная функция в базовом классе, почему мне нужно объявить пространство имен базового класса для всех перегруженных копий, которые я не повторно реализую (учитывая, что я повторно выполнил хотя бы один). Рассмотрим следующий код, например:Наследование перегруженных функций: требуется пространство имен?
#include <iostream>
class Base {
protected:
int bar;
public:
Base() : bar(0) {}
virtual void Bar(int b) { bar = b; }
virtual int Bar() { return bar; }
};
class Foo : public Base {
protected:
int extraBar;
public:
//virtual void Bar(int b) { extraBar = b; } //Uncomment
};
int main() {
Foo T;
std::cout << T.Base::Bar() << std::endl;
std::cout << T.Bar() << std::endl; //will cause code to not compile
return 0;
}
Есть ли простой способ обойти его? Я бы изменить несколько строк кода вручную, так как я
func()
func(var)
func(var, var, var)
и ВДП не то же самое, так что найти и заменить на FUNC (вар) не будет работать так хорошо.
@Adam Что в небесах, ты говоришь? – Chemistpp
Программы на C++ - это не скрипты. – Adam
Эх, я скрипю некоторые, я кое-что кодирую, Уже поздно. – Chemistpp