[英]typedef in Preprocessor macro
我有一個這樣的宏定義,可以輕松地為一個類創建一個shared_ptr:
#define create_ptr(__TYPE__) typedef std::shared_ptr<__TYPE__>
我現在想要的是在類名后附加“ Ptr”,這樣
create_ptr(MyClass)
會導致一個名為MyClassPtr
的typedef
作為std::shared_ptr<MyClass>
怎么做?
您需要令牌串聯##
#define create_ptr(__TYPE__) typedef std::shared_ptr<__TYPE__> __TYPE__ ## Ptr;
class Foo{
public:
};
create_ptr(Foo)
FooPtr foo;
有關詳細說明,請參見此處https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html
另一種途徑是使用聲明:
template <typename T>
using sp = std::shared_ptr<T>;
sp<int> my_shared_int_pointer ....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.