原文链接:https://www.yanbinghu.com/2020/11/07/61329.html
之前在《PIMPL-隐藏类的私有成员》中介绍了一种隐藏类的私有成员的方法,或者说隐藏接口实现细节的方法-PIMPL。
假设提供的接口的入参比较复杂,可能有人会考虑使用结构体作为入参。当你考虑这么做的时候,灾难也将会随之而来……
示例:
// 来源:公众号【编程珠玑】
// 作者:守望先生
// api.h
#include<iostream>
struct Param{
int num;
std::string str;
};
void TestFun(const Param ¶m);
// api.cc
#include "api.h"
void TestFun(const Param ¶m){
std::cout<<"num:"<<param.num<<" str:"<<param.str.c_str()<<std::endl;
}
假设提供TestFun作为一个对外接口,我们编译并制作为静态库:
$ g++ -c api.cc -I./
$ ar -rcs libapi.a api.o
关于静态库的制作,请参考《Linux下如何制作静态库?》。