0

派生クラスオブジェクトを使用して、派生クラス関数と同じシグネチャを持つ基本クラス関数にアクセスすることはできますか?これが私が以下に述べていることのサンプルです。

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;
}
4

3 に答える 3

6

継承されたメソッド名と競合するため、メソッド名を完全に修飾する必要があります。

obj.base1 :: test()を使用します

于 2009-08-19T09:28:40.263 に答える
1

仮想キーワードを指定しなかった場合、派生クラスのメソッドをオーバーライドすることはできません。

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();

基本クラスで

于 2009-11-04T08:23:48.657 に答える
0

あなたはこれを使うことができます:

((base)obj).test();
于 2010-11-08T13:26:16.200 に答える