2013-04-08 157 views
0

我正在將項目從vc6遷移到vs2010。在編譯時我得到一個錯誤的行將控制檯應用程序從VC 6遷移到VS 2010

TMemPool<T>::TTag* that error C2143: syntax error : missing ';' before '*' along with error C4430: missing type specifier - int assumed. Note: C++ does not support default-int.

任何一個可以幫助我。如果我問了一個愚蠢的問題,我很抱歉。但我需要幫助,因爲我不擅長編碼。

此外,如果可能的話,請告訴我在將項目從VC 6遷移到VS 2010時需要完成的任何必需的設置。Plus在遷移代碼之前需要執行哪些步驟。

請在這裏找到錯誤的代碼行。需要幫助請叫我。

在此先感謝。

// ---------------------------------------------------------------------------- 
template <class T> 
TMemPool<T>::TTag* 
TMemPool<T>::GetAt 
(
int I_Index 
) 
{ 
if(I_Index < 0 || (unsigned int)I_Index > GetTotal()) 
    return NULL; 
return &m_pStorage[I_Index].m_Tag; 
} 

#endif // !defined(AFX_TMEMPOOL_H__825D671F_49E6_46C1_AB3D_79920EF692D8__INCLUDED_) 
+1

我的猜測是,在'.h'文件中的'class {}'後面缺少一個分號。 – 2013-04-08 17:05:12

+0

不會,這會導致一個**重複的**類型說明符:'class Foo {}/* 1 */template TMemPool :: TTag */* 2 */TMemPool :: GetAt' - 返回一個'Foo'或者'TTag'?這裏的問題是'tag''不能命名一個類型,正如user93353解釋的那樣。 – MSalters 2013-04-08 19:48:19

回答

2

什麼類型是TTag

嘗試用來編譯的東西在那裏typename失蹤,但VC7開始,這一

template <class T> 
typename TMemPool<T>::TTag* TMemPool<T>::GetAt(int I_Index) 
{ 
    if(I_Index < 0 || (unsigned int)I_Index > GetTotal()) 
     return NULL; 
    return &m_pStorage[I_Index].m_Tag; 
} 

IIRC,VC6,即改變。

+0

Yup,VC6欺騙並實例化'TMemPool '以找出'tag'將會變成什麼樣子。 – MSalters 2013-04-08 19:50:32

+0

@ user93353:非常感謝....幫助我:) – user1909123 2013-04-10 07:59:07

相關問題