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 |