繁体   English   中英

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

[英]get derived classes access the member data and functions of each other

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

这是我的情况

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

可能您需要重新考虑您的设计。 将不会为Derived2的对象分配给a1的内存,也不会为a2和Derived1分配类似的内存。 您的要求等同于说,猫和狗都是动物,我想在狗中使用cat :: whiskers。 您可能需要此:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM