2011-05-27 177 views
0

我感到困惑時,我得到這樣的C++沒有指定類型

錯誤,我有

FxSmartPtr<FxStreamable> able(FcNew,stream->StreamInObject()); 

FxGlobalPair pair(id,able); 

我得到FxGlobalPair pair(id,able);的錯誤是able is not a type

我試圖修改到

FxGlobalPair pair(id,FxSmartPtr<FxStreamable>::able); 

但我得到一個錯誤,是error: 'class FxSmartPtr<FxStreamable>::able' has not been declared

我缺少什麼概念?

UPDATE:typedef pair<FxID, FxSmartPtr<FxStreamable> > FxGlobalPair;

更新2:

標題

+0

我們可以有關於'FxGlobalPair'的信息嗎? – vrince 2011-05-27 14:50:05

+1

編譯器無法正確地決定名稱,類型或變量。我們也不能,除非你顯示在這之前的行,如果有的話。 – 2011-05-27 14:57:27

+2

有人猜測,你可能會遇到最令人頭疼的解析,所以你的第一行被視爲一個函數聲明。 – 2011-05-27 15:44:00

回答

1

我認爲你已經找到了Most Vexing parse

的問題是,

FxSmartPtr能(FcNew,於流> StreamInObject());

可能會定義一個名爲able的函數,而不是一個變量。

+1

那麼你如何解決這個問題???????????????????????????????????? – Jan 2014-07-06 01:52:55