是它在某種程度上可能隱藏實施完成以下任務:使用指針(PIMPL方法)
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成語」。
你能幫助我嗎?
PS。我不想使用void*
並將其左右投射。
爲什麼你不能從x_impl繼承concrete_x? – StoryTeller
你的問題到底是什麼? – Grizzly
爲什麼你不想在中定義'class x_impl'本身? –