gpt4 book ai didi

C++ - 基类和私有(private)头文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:02 26 4
gpt4 key购买 nike

我正在用 C++ 编写一个库,并且有一个像这样的类层次结构:

message.h 文件(在./mylib/src 中)

class Message
{
};

request.h文件(在./mylib/include/mylib中)

#include "message.h"

class Request : public Message
{
};

response.h 文件(在./mylib/include/mylib 中)

#include "message.h"

class Response : public Message
{
};

我希望对用户隐藏 mylib/src 文件夹中的所有内容,并且只想分发 mylib/include 中的文件。但问题是 requst.h 和 response.h #include message.h 所以用户在 #include request.h 和 response.h 时会收到“没有这样的文件”错误。有没有办法解决这个问题?

最佳答案

您可以简单地为 Message 提供一个公共(public)接口(interface)并隐藏实际的类:

class IMessage
{
Message* pImpl;
};

分发此 header 并为 Message 使用前向声明。

另一种选择是使用组合而不是继承(您需要指针作为成员,而不是完整的对象)。

关于C++ - 基类和私有(private)头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14502051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com