2012-02-07 16 views
1

我想通過調用另一個類的方法來傳遞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 2012-02-07 06:13:42

+0

你有什麼問題? – Chip 2012-02-07 06:16:17

+0

問題是我不知道該怎麼做。 – Pier 2012-02-07 07:29:04

回答

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 2012-02-07 07:28:44

+1

@Pier:在C++中,你可以繼承更多的基類。 – stefaanv 2012-02-07 07:44:34

相關問題