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

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

本文关键字:成员 数据 函数 派生 访问 获取      更新时间:2023-10-16

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

这是我的场景

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,也不会有分配给 a1 的内存。你问的相当于说,猫和狗都是动物,我想用猫::胡须在狗身上。您可能需要这个:

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