2016-04-21 65 views
0

我有這樣的宏定義,可以輕鬆地創建一個shared_ptr的一類:的typedef在預處理宏

#define create_ptr(__TYPE__) typedef std::shared_ptr<__TYPE__> 

我想現在是追加「PTR」的類名,使

create_ptr(MyClass) 

會導致一個名爲MyClassPtrstd::shared_ptr<MyClass> 我將如何做到這一點typedef

+2

開始用兩個低線的名稱被保留爲實施。 –

+3

而不是使用宏爲什麼不使用'auto'。然後你可以使用'auto foo = make_shared (params_if_needed);'。現在,您沒有宏,並且該對象在創建時被初始化爲有效狀態。 – NathanOliver

+0

@KerrekSB所以我不能使用'__TYPE__'?我還會用什麼來代替'__TYPE__'? – defense2000x

回答

4

另一種途徑是使用聲明:

template <typename T> 
using sp = std::shared_ptr<T>; 

sp<int> my_shared_int_pointer ....