문제

파생 클래스 객체를 사용하여 파생 클래스 함수의 서명과 동일한 기본 클래스 함수에 액세스 할 수 있습니까?. 다음은 아래에 언급 한 내용의 샘플입니다.

class base1 {
public:
    void test()
    {cout<<"base1"<<endl;};
};

class der1 : public base1 {
public:
    void test()
    {cout<<"der1"<<endl;};
};

int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
도움이 되었습니까?

해결책

상속 된 이름과 충돌 할 때 메소드 이름을 완전히 자격을 갖추어야합니다.

OBJ.Base1 :: test () 사용

다른 팁

가상 키 단어를 제공하지 않은 경우 파생 클래스의 메소드를 무시할 수 없습니다.

class base1
{
    public:
        void test()
        {
            cout << "base1" << endl;
        };
};

class der1 : public base1
{
    public:
        void test()
        {
            cout << "der1" << endl;
        };
};

int main()
{
    der1 obj;
    obj.test(); // How can I access the base class 'test()' here??
    return 0;
}

따라서 위의 코드는 잘못되었습니다. 당신은 주어야합니다 :

virtual void test();

기본 클래스에서

당신은 이것을 사용할 수 있습니다 :

((base)obj).test();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top