c++ 有没有办法在没有继承的情况下从另一个类中向函数添加代码?

xa9qqrwz  于 2022-11-19  发布在  其他
关注(0)|答案(2)|浏览(116)

假设我们有一个函数foo的类(),它的计数为3,我们希望从另一个类修改这个函数,修改后它的计数为3,这是以前声明的,但也执行新的代码。()只能由class1调用,我不想使用继承。我应该添加的新代码假设它与class1没有任何关系。
例如:

#include <iostream>
using namespace std;

class class1 {
public:
    class1()
    {
        
    }
    void foo()
    {
        for(int i =0;i<2;i++)
        {cout << i << endl;}
    }
};

class class2 {
public:
    class2()
    {
       
    }
    void foo() override
    {
       Super::foo();
       cout << "Jump from a cliff" << endl;
    }

};

int main()
{   
    class1 c1 = class1();
    class2 c2 = class2();
    c1.foo();
    return 0;
}

结果:

0
1
2
Jump From a cliff
e0bqpujr

e0bqpujr1#

您需要对象来呼叫非静态成员函式。
如果你想从class2::foo得到想要的输出,你可以这样实现它:

class class2 {
public:
    void foo() 
    {
       class1 x;
       x.foo();
       cout << "Jump from a cliff" << endl;
    }

};

或者,class1可以有class1型别的成员。

0md85ypi

0md85ypi2#

在函数指针数组上找到了解决方案。

相关问题