2012-02-07 14 views
1

"this"を含むMyClassのオブジェクトの参照を渡し、別のクラスのメソッドを呼び出したいとします。は "this"をパラメータとしてshared_ptrを渡して変数に格納します

これは私がオブジェクトをこのように作成するのMyClassが

typedef boost::shared_ptr<class MyClass> MyClassRef; 

class MyClass { 
    //bla bla bla 
}; 

MyClass::method(){ 
    someObject->someMethod(this); //this object is from the ReceiverClass 
} 

を定義する方法を私のメインのアプリです:

myObject = MyClassRef(new MyClass()); 

は、どのように私は、「これを」を受信するようにReceiverClass中)(のsomeMethodを定義する必要がありますパラメータとして保存し、それをメンバ変数??に格納します。擬似コードで

私はそれがこのような何か...

class ReceiverClass { 
    public: 
    void someMethod(shared_ptr param); 
    shared_ptr mReference; 
}; 

ReceiverClass::someMethod(shared_ptr param){ 
    mReference = param; 
} 

だと思う...しかし、私は完全に失われたんです。

+2

boost :: enable_shared_from_this。 – Lalaland

+0

あなたの問題は何ですか? – Chip

+0

問題はどのように行うのかわかりません。 – Pier

答えて

1

Ethan Steinbergのように、MyClassはboost :: enable_shared_from_this(または、std :: tr1またはstdのバージョンはコンパイラで利用可能なものによって異なります)から継承してください。次にあなたのメソッドをsomeObject-> someMethod(shared_from_this())として呼び出します。

shared_from_this()は、あなたが探していると思われる呼び出し元のオブジェクトにshared_ptrを返します。

+0

MyClassはすでに他のクラスから継承しています。 (わかりますが、例ではありません) – Pier

+1

@Pier:C++では、より多くの基底クラスから継承できます。 – stefaanv