jpe*_*pen 4 c++ header-files static-libraries
我正在用C++编写一个库,并且有一个像这样的类层次结构:
message.h文件(在./mylib/src中)
class Message
{
};
Run Code Online (Sandbox Code Playgroud)
request.h文件(在./mylib/include/mylib中)
#include "message.h"
class Request : public Message
{
};
Run Code Online (Sandbox Code Playgroud)
response.h文件(在./mylib/include/mylib中)
#include "message.h"
class Response : public Message
{
};
Run Code Online (Sandbox Code Playgroud)
我希望我的mylib/src文件夹中的所有内容都对用户隐藏,并且只想在mylib/include中分发文件.但问题是requst.h和response.h #include message.h,因此当#including request.h和response.h时,用户将收到"No such file"错误.有办法解决这个问题吗?
您只需提供一个公共接口Message并隐藏实际类:
class IMessage
{
Message* pImpl;
};
Run Code Online (Sandbox Code Playgroud)
分发此标头并使用前向声明Message.
另一种选择是使用组合而不是继承(你需要指针作为成员,而不是完整的对象).