如果我在基类中有一个重载函数,为什么我需要为我没有重新实现的所有重载副本声明基类的命名空间(假设我已经重新实现了至少一个)。例如,考虑以下代码:
#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)
和 var 从来都不是一回事,所以在 func(var) 上查找和替换不会那么好用。