【发布时间】:2012-10-26 17:32:11
【问题描述】:
是否有可能完成以下操作:
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。我不想使用 void* 并将其投射到周围..
【问题讨论】:
-
为什么你不能让concrete_x继承自x_impl?
-
你的问题到底是什么?
-
你为什么不想在
中定义 class x_impl本身? -
concrete_x是我试图隐藏的库类
标签: c++ dependencies pimpl-idiom