是否可以阻止父项 class 中的 #include 落入子项 class

Is it possible to block #include in parent class from falling to child class

我是 C++ 的新手,真的不知道如何 google 找到这个问题的答案,所以如果这是一个愚蠢的问题,我深表歉意。

我目前有一本书 class、库存 class 和图书馆 class。库存 class 需要访问书籍 class,图书馆 class 需要访问库存 class,但图书馆不需要访问书籍 class .有没有办法防止 Book 的包含落入图书馆 class?

class Book
{
};

.

#include "book.h"
#include <vector>

class Inventory
{
    std::vector<Book> Books;
};

.

#include "inventory.h"

class Library
{
    int main()
    {
        Book myBook; // I don't want this to be allowed
    }
};

谢谢大家!

Is it possible to block #include in parent class from falling to child class

没有

但是,可以修改 parent class 使其定义不依赖于 Book,因此其 header 不需要包含它,因此不会传递包含在 child.

消除对成员类型 objects 的依赖的模式称为 PIMPL(有时称为 "pointer to implementation" 或 "private implementation")。简而言之,想法是不直接存储成员,而是通过不透明指针间接存储成员。