c++ - 如何从一个类调用另一个类的函数而不需要继承

标签 c++ class object member

因此,对于我们作业中的一个问题,我们的教授给了我们以下代码片段,并要求我们运行并实现它,以便我们能够从 class1 访问 class2 的 print() 函数。

但是,我们需要在两个类之间不使用任何继承/聚合/组合的情况下执行此操作,这是我遇到的问题。除此之外,我们可以修改任何内容以使代码可以运行。感谢任何能够提供帮助的人!

#include <iostream>
using namespace std;

class class1 {
public:
    int x;
    class1()
    {
        x = 0;
    }
    void accessclass2(/* to be implemented*/)
    {
        //call the print() function from class2
    }
};

class class2 {
public:
    int y;
    class2()
    {
        y = 10;
    }
    void print()
    {
        cout << y << endl;
    }
};

int main()
{   //to be implemented; 
    //create class1 and class2 objects and access the print() function
    return 0;
}

最佳答案

如果将它们分成 .hpp 和 .cpp 文件,那么您可以转发声明 class2 并通过指针传递给 accessclass2

class1.hpp:

...
class class2;// forward declaration
...
class class1
{
    ...
    void accessclass2(class2 *x);
    ...
};

class1.cpp:

...
void class1::accessclass2(class2 *x)
{
    x->print();
}
...

关于c++ - 如何从一个类调用另一个类的函数而不需要继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262209/

相关文章:

javascript - 如何创建具有已定义值类型的空对象

c++ - 将基于 Wt 的小部件作为 iframe 嵌入网页中?

c++ - 基于整数范围的模板特化

java - 类路径在哪里?

c++ - 在 C++ 中访问成员对象的方法

java - 如何计算并仅返回 ArrayList 中为真的对象?

带变量的 C++ 幂函数

c++ - 设置 SO_RCVBUF 会减小窗口缩放因子

java - 如何读写抽象类的变量

javascript - 将数据存储在数组或对象中哪个更有效?