通过引用将对象传递到类中

时间:2012-02-17 21:17:49

标签: c++ oop parameters

对,我试着在这里解释我的想法。 我现在有两个班,叫做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.

2 个答案:

答案 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;

}