因此,对于我们作业中的一个问题,我们的教授给了我们以下代码片段,并要求我们运行并实现它,以便我们能够从 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/