gpt4 book ai didi

c++ - typedef boost::shared_ptr Ptr;或者#define Ptr boost::shared_ptr

转载 作者:太空狗 更新时间:2023-10-29 23:31:39 25 4
gpt4 key购买 nike

我刚刚开始研究一个新的代码库,其中每个类都包含一个 shared_ptr typedef ( similar to this),例如:

typedef boost::shared_ptr<MyClass> Ptr;

保存输入 boost::shared_ptr 的唯一目的是什么?

如果是这样,那是唯一不做的理由

#define Ptr boost::shared_ptr 

在一个通用 header 中#define 的一般问题?然后你可以这样做:

Ptr<MyClass> myClass(new MyClass);

不需要打字

MyClass::Ptr myClass(new MyClass);

并保存每个类中的Ptr定义。

最佳答案

宏 (#define) 总是全局定义的。这意味着每次使用“字符串”Ptr(甚至是变量)都将被宏替换。

typedef 可以放在类中,命名空间中,...所以您可以更好地控制它。

编辑:另一个优点是您可以在不同的类中使用不同的 Ptr 类型,例如

  • ClassX::Ptr 是一个 boost shared_ptr
  • ClassY::Ptr 可以是另一个 shared_ptr
  • ClassZ::Ptr 可以是一个简单的“Class Z *”指针

如果随后在模板化代码中使用这些类,您可以使用 T::Ptr 作为指向该类的指针类型,模板将使用最适合该类的指针。

关于c++ - typedef boost::shared_ptr<MyJob> Ptr;或者#define Ptr boost::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com