是否可以阻止父项 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")。简而言之,想法是不直接存储成员,而是通过不透明指针间接存储成员。
我是 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")。简而言之,想法是不直接存储成员,而是通过不透明指针间接存储成员。