获取派生类访问彼此的成员数据和功能

时间:2015-01-22 13:37:26

标签: c++ inheritance

如何使派生类访问彼此的成员数据和功能。这两个类都是从基类继承为纯抽象的。

这是我的方案

class Base
{
public:
    virtual void do_something() = 0;
};

class Derived1 : public Base
{
public:
    virtual void do_something()
    {
        // need to use a2
        // need to use func
    }
private:
    int a1;
};

class Derived2 : public Base
{
public:
    virtual void do_something()
    {
        // need to use a1
    }
    void func(){}
private:
    int a2;
};

1 个答案:

答案 0 :(得分:1)

可能你需要重新考虑你的设计。对于Derived2的对象,没有为a1分配内存,对于a2和Derived1也没有内存。你问的是相当于说,猫和狗都是动物,我想在狗中使用猫::胡须。 你可能需要这个:

class Base
{
public:
    virtual void do_something() = 0;
};

class Derived : public Base
{
public:
     int a1;
     int a2;
     void func(){}
};
class Derived1 : public Derived 
{
public:
    virtual void do_something()
    {
        // can use a2 and func here
    }
};

class Derived2 : public Derived
{
public:
    virtual void do_something()
    {
        // need to use a1
    }
    void func() override {}
};