是否有可能访问具有相同的签名,使用一个派生类对象的派生类功能的基类函数?这里就是我下面陈述的样本..

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 ::测试()

其他提示

您无法在派生类中重写的方法,如果你没有提供的虚拟键字。

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