0

プロジェクトを vc6 から vs2010 に移行しています。コンパイル中に次の行でエラーが発生します

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 に移行する際に必要な事前設定を教えてください。さらに、コードを移行する前に実行する必要がある手順はありますか。

エラーのコード行をここで見つけてください。他に何か必要な場合はお知らせください。

前もって感謝します。

// ----------------------------------------------------------------------------
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_)
4

1 に答える 1

2

は何型TTagですか?

これを試して

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 では不足しているものをコンパイルしていtypenameましたが、VC7 以降ではそれが変わりました。

于 2013-04-08T17:05:36.370 に答える