2012-02-17 94 views
0

對不起,試圖在這裏解釋我的想法。 我有兩個類,目前稱爲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

你能告訴我們你實際上試過了嗎? – talnicolas 2012-02-17 21:18:50

+0

你想在什麼時候將class2的對象「傳遞」到class1的對象中? – dasblinkenlight 2012-02-17 21:19:58

+0

class1和class2是以任何方式相關的嗎? – 2012-02-17 21:21:13

回答

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) 
+0

非常感謝!不能相信我忘記了。所以我明白這個解決方案pmc指針不會指向一個被破壞的對象? – 2012-02-17 21:41:31

+0

它將指向您實際傳入的對象,而不是指向將立即銷燬的本地副本。具體來說,'pmc'將指向'mc';只要'mc'確實,'* pmc'就會保持有效。 – 2012-02-17 22:07:37

0

你可以抱着Class2中的成員變量在這樣的Class1,並有一組變量中設置的成員變量。

#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; 

}