对,我试着在这里解释我的想法。 我现在有两个班,叫做class1和class2。 我想通过引用将class2的对象传递给class1的对象。
但我想只需要传入一次,而不是每次调用方法时都必须传递它。
我已经尝试创建指针,我尝试创建引用,但无济于事。 任何帮助表示赞赏。
#include <iostream>
using namespace std;
class myclass
{
private:
int i;
public:
myclass()
{
}
void method()
{
cout << "Enter num: ";
cin >> i;
}
void display()
{
cout << i;
}
};
class relatedclass
{
public:
relatedclass(myclass ob)
{
pmc = &ob;
}
myclass *pmc;
};
void main()
{
myclass mc;
relatedclass rc(mc);
//display value of mc.i
mc.display();
cout << endl;
//ok lets change the i variable
rc.pmc->method();
cout << endl;
//display new value of mc.i
mc.display();
cout << endl;
}
对于我输入50的测试日期,我预计mc对象将被更新,我现在将等于50.
答案 0 :(得分:1)
struct class2 {
int i, j;
};
struct class1 {
class2& c2;
class1(class2& c2) : c2(c2) {}
void Froz() {
c2.i = c2.j;
}
int Baz() {
return c2.i * c2.j;
}
};
<小时/> 编辑:在您的示例中,在
relatedclass
构造函数中,您获取局部变量的地址。当构造函数返回时,该变量将被销毁。之后,你的pmc
指针指向一个被破坏的对象,这是一个禁忌。
更改此行:
relatedclass(myclass ob)
到这个
relatedclass(myclass& ob)
答案 1 :(得分:0)
你可以在class1中保存class2的成员变量,并设置成员变量。
#include <iostream>
using namespace std;
class class2
{
public:
int m_i;
};
class class1
{
public:
void set(class2& c2) { m_c2 = c2; };
class2 m_c2;
};
void main()
{
class2 c2;
c2.m_i = 2;
class1 c1;
c1.set(c2);
cout << c1.m_c2.m_i << std::endl;
}