是否有可能完成以下任务:
x.hpp - 此文件包含在许多其他类中
class x_impl; //forward declare
class x {
public:
//methods...
private:
x_impl* impl_;
};
x.cpp - 实现
#include <conrete_x>
typedef concrete_x x_impl; //obviously this doesn't work
//implementation of methods...
所以基本上,我希望用户包含文件x.hpp,但不知道conrete_x.hpp标头。
由于我concrete_x
只能通过指针使用并且它仅作为私有数据成员出现,因此前向声明应该足以让编译器知道为它准备多少空间。它看起来很像著名的“pimpl idiom”。
你能帮我解决这个问题吗?
PS。我不想使用 avoid*
并对其进行投射..