ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【C++】在使用PImpl技术时,template/typename的不常见用法 [打印本页]

作者: 前进之路    时间: 2023-5-15 09:54
标题: 【C++】在使用PImpl技术时,template/typename的不常见用法
PImpl:Pointer to implementation,常用于隐藏实现细节,构造拥有稳定 ABI 的 C++ 库接口,及减少编译时依赖。
在使用pimpl技术时,pimpl是类静态变量,对其在源文件中的实现需要使用typename关键字

对于模板类的静态成员变量的定义,你需要使用完整的模板类型限定符来指定 std::unique_ptr 的类型。在这个示例中,我们使用 typename MyClass::Impl 来指定 std::unique_ptr 的类型。
[code]// MyClass.h#include templateclass MyClass {public:    void doSomething();private:    class Impl;    static std::unique_ptr p_impl;  // 静态 p_impl 变量的声明};// MyClass.cpptemplateclass MyClass::Impl {public:    void doSomething() {        // 实现具体逻辑        std::cout template doSomething<U>();处,使用template关键字告诉编译器我们正在引用一个模板成员函数doSomething<U>()。不使用template关键字会报错</p>[code]// MyClass.h#include templateclass MyClass {public:    MyClass();    template    void doSomething();private:    class Impl;    std::unique_ptr p_impl;};// MyClass.cpptemplateclass MyClass::Impl {public:    template    void doSomething() {        // 实现具体逻辑        std::cout




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4