2012-02-17 14 views
0

ここで私の考え方を説明しようとします。 私は現時点でclass1とclass2という2つのクラスを持っています。 class2のオブジェクトをclass1のオブジェクトに参照渡ししたいと思います。参照でクラスにオブジェクトを渡す

しかし、私はメソッドを呼び出すたびに渡すのではなく、一度だけ渡す必要があります。

私はポインタを作成しようとしましたが、私は参照を作成しようとしましたが、無駄です。 助けていただければ幸いです。あなたの例では、中:私は50に入った、と私はMCオブジェクトが更新されると期待して、私は同じ50

+0

実際に何を試してみることができますか? – talnicolas

+0

class2のオブジェクトをいつclass1のオブジェクトに渡す必要がありますか? – dasblinkenlight

+0

class1とclass2は何らかの形で関連していますか? –

答えて

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


EDIT今希望試験日のため

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

relatedclassコンストラクタでは、ローカル変数のアドレスを取得します。その変数は、コンストラクターが戻るときに破棄されます。その後、あなたのpmcポインターは破壊されたオブジェクトを指します。

変更この行:この

relatedclass(myclass& ob) 
+0

ありがとう!、私はそれを忘れたと信じられない。だから、私はこの解決策を理解しているpmcポインタは、破棄されたオブジェクトを指摘しないでください? –

+0

すぐに破棄されるローカルコピーを指す代わりに、実際に渡すオブジェクトを指します。具体的には、 'pmc'は' mc'を指します。 '* pmc'は' mc'が行っている限り正確に有効です。 –

0

relatedclass(myclass ob) 

あなたはこのようclass1でクラス2のメンバ変数を保持し、メンバ変数を設定し、設定された変数を持つことができます。

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

} 
関連する問題