【发布时间】:2023-07-25 07:38:01
【问题描述】:
我正在将我的项目从 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_)
【问题讨论】:
-
我猜,您在
.h文件中的class{}后面缺少一个分号。 -
不,这会导致 duplicate 类型说明符:
class Foo {} /*1*/template <class T> TMemPool<T>::TTag* /*2*/ TMemPool<T>::GetAt-GetATreturn aFoo或TTag也是如此?这里的问题是TTag没有命名类型,正如 user93353 解释的那样。
标签: c++ visual-studio-2010 templates porting visual-c++-6