<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【C++】在使用PImpl技術時,template/typename的不常見用法

      PImpl:Pointer to implementation,常用于隱藏實現細節,構造擁有穩定 ABI 的 C++ 庫接口,及減少編譯時依賴。

      在使用pimpl技術時,pimpl是類靜態變量,對其在源文件中的實現需要使用typename關鍵字

      對于模板類的靜態成員變量的定義,你需要使用完整的模板類型限定符來指定 std::unique_ptr 的類型。在這個示例中,我們使用 typename MyClass<T>::Impl 來指定 std::unique_ptr 的類型。

      // MyClass.h
      
      #include <memory>
      
      template<typename T>
      class MyClass {
      public:
          void doSomething();
      
      private:
          class Impl;
          static std::unique_ptr<Impl> p_impl;  // 靜態 p_impl 變量的聲明
      };
      
      // MyClass.cpp
      
      template<typename T>
      class MyClass<T>::Impl {
      public:
          void doSomething() {
              // 實現具體邏輯
              std::cout << "Doing something..." << std::endl;
          }
      };
      
      template<typename T>
      std::unique_ptr<typename MyClass<T>::Impl> MyClass<T>::p_impl = std::make_unique<typename MyClass<T>::Impl>();  // 靜態 p_impl 變量的定義
      
      template<typename T>
      void MyClass<T>::doSomething() {
          p_impl->doSomething();
      }
      

      如果一個模板類使用p_impl技術,同時內部包含模板函數,那么模板函數的調用需要額外使用template關鍵字

      在最后的代碼p_impl->template doSomething<U>();處,使用template關鍵字告訴編譯器我們正在引用一個模板成員函數doSomething<U>()。不使用template關鍵字會報錯

      // MyClass.h
      
      #include <memory>
      
      template<typename T>
      class MyClass {
      public:
          MyClass();
          template<typename U>
          void doSomething();
      
      private:
          class Impl;
          std::unique_ptr<Impl> p_impl;
      };
      
      // MyClass.cpp
      
      template<typename T>
      class MyClass<T>::Impl {
      public:
          template<typename U>
          void doSomething() {
              // 實現具體邏輯
              std::cout << "Doing something with type " << typeid(U).name() << "..." << std::endl;
          }
      };
      
      template<typename T>
      MyClass<T>::MyClass() : p_impl(std::make_unique<Impl>()) {}
      
      template<typename T>
      template<typename U>
      void MyClass<T>::doSomething() {
          p_impl->template doSomething<U>();
      }
      
      posted @ 2023-05-15 01:08  縉云燒餅  閱讀(329)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 色狠狠色噜噜AV一区| 国产又大又黑又粗免费视频| 日本免费观看mv免费版视频网站| 久久精品国产亚洲av高| 亚洲国产v高清在线观看| 护士张开腿被奷日出白浆| 国产suv精品一区二区五| 91国在线啪精品一区| 国产在线乱子伦一区二区| 国产又色又爽又黄的免费软件| 精品无码国产污污污免费| 日本牲交大片免费观看| 亚洲欧美在线一区中文字幕| 国产免费午夜福利蜜芽无码| 国产精品女同一区三区五区| 国产AV福利第一精品| 国产精品午夜福利视频| 亚洲免费观看一区二区三区| 亚洲成在人线av无码| 国产av综合色高清自拍| 这里只有精品在线播放| 最新中文字幕av无码专区不| 新化县| 久久免费偷拍视频有没有| 无码专区 人妻系列 在线| 欧美乱妇高清无乱码免费| 日韩亚洲国产中文永久| 亚洲一区二区中文av| 国产精品日本一区二区不卡视频 | 国产尤物精品自在拍视频首页 | 日韩在线观看精品亚洲| 欧美喷潮最猛视频| 热久久99精品这里有精品| 日本一区二区不卡精品| 亚洲青青草视频在线播放| 色综合 图片区 小说区| 成人午夜av在线播放| 黑人大荫道bbwbbb高潮潮喷| 亚洲熟妇少妇任你躁在线观看无码| 成人免费视频在线观看播放| 精品尤物国产尤物在线看|