기본 클래스에 오버로드 된 함수가있는 경우 적어도 하나 이상을 다시 구현 했으므로 다시 구현하지 않은 모든 오버로드 된 복사본에 대한 기본 클래스의 네임 스페이스를 선언해야하는 이유는 무엇입니까? 예를 들어, 다음 코드를 고려하십시오.오버로드 된 함수 상속 : 네임 스페이스가 필요합니까?
#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)에 대체 적이 있기 때문에 나는 손으로 여러 줄의 코드를 수정해야합니다.
@ 아담을 유도 할 수있다? – Chemistpp
C++ 프로그램은 스크립트가 아닙니다. – Adam
어, 일부 코드 일부는 스크립트, 늦었습니다. – Chemistpp