如何从一个类调用另一个类的功能,无需遗产
问题描述:
所以在我们的分配的问题之一,我们的教授给了我们这个下面的代码片段,并要求我们,使其运行并执行它,使我们能够访问的Class2的来自class1的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();
}
...
答
#include <iostream>
using namespace std;
class class2 {
public:
int y;
class2()
{
y = 10;
}
void print() const
{
cout << y << endl;
}
};
class class1 {
public:
int x;
class1()
{
x = 0;
}
void accessclass2(const class2 & cl2)
{
cl2.print();
}
};
int main()
{
class2 c2 = class2();
class1 c1 = class1();
c1.accessclass2(c2);
return 0;
}
更安全的方法是使打印(),其为常数函数:无效打印()const的{}
并通过C2为const引用作为 无效accessclass2(常量类class2 & CL2)`
答
如何:
int main()
{
//create class1 and class2 objects and access the print() function
class2 c2Object;
C2Object.print();
// Oh, you want to use class2::print() from within class1? Ok:
class1 c1Object;
c1Object.accessclass2(&c2Object);
}
// In class2's implementation:
void accessclass2(class2 *pClass2Object)
{
//call the print() function from class2
pClass2Object->print();
}
这个问题似乎是题外话,因为它是一门功课问题,问的答案。没有显示之前的工作。 – 2014-12-03 02:23:55