当前位置: 首页 > news >正文

中山网站建设策划公司需要做网站

中山网站建设策划,公司需要做网站,百度app安卓版下载,传销网站开发系统维护放几轮跟 chatgpt 的对话#xff0c;很精彩的回答 You 我有个问题#xff0c;我的 main 目标依赖 src/gcp_subscriber.h 的 GCPSubscriber class 这个 class 有个 private 成员 google::cloud::pubsub::Subscriber 也就意味着我得在 gcp_subscriber.h 里面引用 google clou…放几轮跟 chatgpt 的对话很精彩的回答 You 我有个问题我的 main 目标依赖 src/gcp_subscriber.h 的 GCPSubscriber class 这个 class 有个 private 成员 google::cloud::pubsub::Subscriber 也就意味着我得在 gcp_subscriber.h 里面引用 google cloud 的依赖库。 也就意味着 main 也会 include 到 google cloud 依赖库这会减慢我的 main 目标编译速度 ChatGPT 在 C 中使用前置声明forward declaration可以避免引入完整的头文件而只引入所需的类的声明。通过使用前置声明你可以减少编译时需要处理的代码量从而提高编译速度。 在你的 gcp_subscriber.h 中尝试使用前置声明而不是包含整个 google/cloud/pubsub/subscriber.h 头文件。只在实现文件中例如 gcp_subscriber.cpp引入完整的头文件。这样可以将依赖库的具体实现细节延迟到编译阶段的实现文件中从而加速主目标的编译。 以下是一个示例 gcp_subscriber.h: #ifndef GCP_SUBSCRIBER_H_ #define GCP_SUBSCRIBER_H_#include memory // 如果使用了 std::shared_ptr// Forward declaration of google::cloud::pubsub::Subscriber namespace google::cloud::pubsub { class Subscriber; } // namespace google::cloud::pubsubclass GCPSubscriber { public:GCPSubscriber(std::string channel, std::shared_ptrMessageBufferQueue queue);void block_receive();private:std::shared_ptrMessageBufferQueue queue;std::unique_ptrgoogle::cloud::pubsub::Subscriber subscriber; };#endif // GCP_SUBSCRIBER_H_gcp_subscriber.cpp: #include gcp_subscriber.h #include google/cloud/pubsub/subscriber.hGCPSubscriber::GCPSubscriber(std::string channel, std::shared_ptrMessageBufferQueue queue): queue(queue),subscriber(std::make_uniquegoogle::cloud::pubsub::Subscriber(google::cloud::pubsub::MakeSubscriberConnection(google::cloud::pubsub::Subscription(combo-001, fmt::format(cme-mktdata-{}-NR, channel))))) { }void GCPSubscriber::block_receive() {// 实现 block_receive 函数的具体内容// ... }通过这种方式gcp_subscriber.h 只需要知道 google::cloud::pubsub::Subscriber 的存在而不需要知道它的具体实现细节。这有助于减少 main 目标的编译时间因为它不再需要处理完整的 google/cloud/pubsub/subscriber.h。 省略中间一些对话 You 那这前置声明不就失效了吗 ChatGPT 你是对的我为之前的回答道歉。由于需要在 gcp_subscriber.h 中的实现文件 (gcp_subscriber.cc) 中使用完整的 google::cloud::pubsub::Subscriber前置声明就不再适用了。 在这种情况下你需要在 gcp_subscriber.h 中包含完整的头文件以便确保 google::cloud::pubsub::Subscriber 的定义是可见的。这将导致包含 Google Cloud Pub/Sub 相关的头文件从而增加了编译时间。解决方案是确保只在需要的地方包含这些头文件以尽量减小编译时间的影响。 如果你的项目结构允许可以考虑将 google::cloud::pubsub::Subscriber 的具体实现移到实现文件如 gcp_subscriber.cc中而不是将其定义放在头文件中。这样头文件只需要进行前置声明而不必包含完整的定义。这样可以减小头文件的依赖提高编译速度。例如 gcp_subscriber.h: #ifndef GCP_SUBSCRIBER_H_ #define GCP_SUBSCRIBER_H_#include memoryclass MessageBufferQueue; // 前置声明class GCPSubscriber { public:GCPSubscriber(std::string channel, std::shared_ptrMessageBufferQueue queue);void block_receive();private:std::shared_ptrMessageBufferQueue queue;class Impl; // 前置声明std::unique_ptrImpl subscriber_impl; };#endif // GCP_SUBSCRIBER_H_gcp_subscriber.cc: #include gcp_subscriber.h #include google/cloud/pubsub/subscriber.hclass GCPSubscriber::Impl { public:google::cloud::pubsub::Subscriber subscriber;// ... 其他成员和实现 };GCPSubscriber::GCPSubscriber(std::string channel, std::shared_ptrMessageBufferQueue queue): queue(queue), subscriber_impl(std::make_uniqueImpl()) {// 对 Impl 进行初始化包括创建 google::cloud::pubsub::Subscriber }void GCPSubscriber::block_receive() {// 实现 block_receive 函数的具体内容使用 subscriber_impl-subscriber// ... }这种方式可以将 Google Cloud Pub/Sub 的具体实现从头文件中移除从而减小编译时的依赖。 You 这是 pimpl 吗 ChatGPT 是的这种技术被称为 PimplPointer to Implementation或者又称为 Opaque Pointer。Pimpl 是一种设计模式其主要目标是将类的实现细节成员变量、成员函数的实现等隐藏在一个独立的类中以减小头文件的依赖提高封装性同时降低编译时的依赖性。 在 Pimpl 模式中类的头文件只包含对实现类的前置声明而实现类的定义则放在实现文件中。这样只有在实现文件中才需要包含具体的头文件而头文件中则只需要包含前置声明从而减小了编译时的依赖。 这对于减小编译时间和隐藏实现细节非常有用。同时当实现发生变化时只需要修改实现文件而头文件可以保持不变从而减小了对外部代码的影响。 在你的例子中GCPSubscriber 类的具体实现被封装在 GCPSubscriber::Impl 类中而 GCPSubscriber 的头文件中只包含了 MessageBufferQueue 的前置声明和 Impl 的前置声明从而隐藏了 google::cloud::pubsub::Subscriber 的具体实现。
http://www.dnsts.com.cn/news/50721.html

相关文章:

  • 海外留学网站建设方案专业的微网站公司
  • 网站开发招标任务书网页设计师英文
  • 招聘网站数据分析怎么做国外素材网pinterest
  • 自己做一元夺宝网站腾讯企点是什么软件
  • 新手网站建设教程图书什么是网站降权处理
  • 做网站关键词优化的公司网站栏目结构哪些
  • 做kegg通路富集的网站网站建站平台开发服务
  • 佛山建站网站模板海南省建设执业资格注册管理中心网站
  • 山东省专业群建设网站哪家公司可以做网站
  • 番禺手机网站制作推广八闽视频app下载
  • 简述网站一般建设的流程大型外包公司
  • 做零售出口的网站免费小说网站怎么做
  • 大学生做网站赚钱流程网上怎么做推广
  • vue做电商网站王烨雄
  • 网站经营许可备案公司建个网站要多少钱
  • 巴彦淖尔 网站建设品牌宣传网站制作
  • 唐山网站制作营销型网站备案
  • 南通网站备案龙华优化公司
  • 常州手机网站制作小程序如何注册步骤
  • 北京网页网站设计做网站的介绍
  • 郑州网站优化公司电话中信建设有限责任公司总监
  • 宠物网站建设规划书没有做icp备案的网站
  • dede网站微信分享封面棋牌源码之家
  • 公司网站建设知乎深圳大事件
  • 福州网站建设加q479185700vi设计怎么做
  • 网站建设毕业设计心得华为云云速建站
  • 网站建设都有哪些方面网页设计公司背景
  • 长沙网站建设策划ps网页设计案例
  • 网站全面推广方案织梦制作网站地图
  • iis网站属性没有asp.net网站建设人员组成