2013-11-25 41 views
1

我的編譯器抱怨說,我的一個對象作爲一個不同的類(如下圖所示)的私有成員的聲明給了我這個錯誤:編譯錯誤聲明派生類對象作爲一個私有成員在類

private:

ForwardStrategy::ForwardStrategy* forwardStrategy; 

    ForwardToStrategy::ForwardToStrategy* forwardToStrategy; 

/home/ics45c/projects/p4/src/Person.hpp:45:19:錯誤:對'ForwardStrategy'的限定引用是構造函數 名稱而不是可以聲明構造函數的類型 ForwardStrategy :: ForwardStrategy * forwardStrategy; ^ /home/ics45c/projects/p4/src/Person.hpp:47:21:錯誤:對'ForwardToStrategy'的限定引用是構造函數 名稱而不是可以聲明構造函數的類型 ForwardToStrategy :: ForwardToStrategy * forwardToStrategy; ^

2生成的錯誤。

所以它看起來像編譯器認爲我指的是構造函數,而不是類型,但我不知道如何解決此問題?

很抱歉的可怕格式...我我真的不知道如何正確地做到這一點,但在此先感謝!因爲它是寫在你的問題的方式意味着你試圖訪問一個成員(這是構造函數)的這一類不定義它的實例

private: 

ForwardStrategy* forwardStrategy; 

ForwardToStrategy* forwardToStrategy; 

+2

如果您只是編寫'ForwardStrategy * forwardStrategy;'而不是'ForwardStrategy :: ForwardStrategy * forwardStrategy;',因爲我認爲最後一個引用的是類的成員而不是類本身(作爲新的 –

回答

1

只是將其更改爲。

+0

我想我應該添加更多的信息,我的壞... 這些策略是在他們自己的頭文件中,並且我將它包含在我的文件頂部 – MattDella

+1

@ user3029740,頭文件不一樣作爲名稱空間的東西,也不隱式地添加一個名稱空間。你有沒有嘗試過T-D的建議?什麼工作?什麼沒有用? – chwarr

+0

我解決了這個問題。顯然,我有一個循環包含的問題,因爲我忘記從我的頭文件中刪除#include。感謝您的幫助! – MattDella

相關問題