3
我現在有這樣的:我可以使用「this」類型作爲模板參數(在宏內)嗎?
#define THIS(T) (boost::static_pointer_cast<T>(shared_from_this()))
宏在方法中使用這樣的:
void Derived::run() {
do_something_with_a_shared_ptr(THIS(Derived));
}
這一切都很好,但我想,以消除(Derived)
和有:
void Derived::run() {
do_something_with_a_shared_ptr(THIS);
}
這可能嗎?
或者,有沒有更好的方法可以方便地訪問shared_ptr
至this
,在派生(間接)從boost::enable_shared_from_this
派生的類? This question似乎表明對此的答案是否定的。
的類層次結構如下所示:
class Base: public boost::enable_shared_from_this<Base> {
...
}
class Derived: public Base {
...
void run();
...
}
void do_something_with_a_shared_ptr(boost::shared_ptr<Derived>);
請注意,如果您使用C++ 11,則可以根據decltype和this進行操作。 –
爲什麼這會返回一個指向共享指針的指針? –
我的錯誤,應該已經複製了代碼。現在會修復。 –