ALL,接口類產品 「使用未定義類型的」
我在foo.h中一個下面的代碼:
class __declspec(dllexport) Foo
{
protected:
struct Impl;
Impl *pimpl;
public:
std::wstring &GetMember() { return pimpl->m_string; };
};
struct Foo::Impl
{
std::wstring m_string;
};
不幸的是這個代碼產生一個錯誤:
Use of undefined type 'Foo::Impl'
嘗試轉發declare Database :: Impl導致另一個編譯器錯誤。
那麼修復它的最佳方法是什麼?
所有這些都在一個頭文件中。
編輯:
我想我可以把功能在實際實現類,但我真的想消除重複代碼。但是看起來我不會有其他選擇。
如果'Impl'與'Database :: Impl'是相同的類型,那麼這行'pimpl-> m_string'需要看完整的定義而不僅僅是一個前向聲明。如果類型不同,請修改您的帖子爲[mcve]。另外PIMPL習語的要點是在頭文件中沒有實現。 –