0%

C++ 防止头文件暴露私有变量

C++ 防止头文件暴露私有变量

C++ 中可以通过嵌套类的形式防止成员私有变量暴露在头文件里。

1
2
3
4
5
6
7
8
9
10
// 头文件
class Exposure {

Exposure();
int interface(int foo);

private:
class Impl;
std::unique_ptr<Impl> impl_;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
// 源文件
class Exposure::Impl {
// 具体实现
int interfaceImpl(int foo){
return 0;
}
}

Exposure::Exposure() : impl_(std::make_unique<Impl>()){}

int Exposure::interface(int foo){
return this->impl_->interfaceImpl(foo);
}