#include <list>
template < class TYPE >
class CIndex : protected std::list <TYPE>
{
public:
typedef std::list <TYPE>::iterator CIndexIt;
typedef std::list <TYPE>::difference_type CIndexDiff;
错误发生在上述代码的最后一行。对于模板:错误C4430:缺少类型说明符 - 假定为int。注:C++不支持default-int
我见过this和the msdn page但都没有解决我的错误。
任何人都知道可能导致问题的原因是什么?
编辑:
的原因,第一个链接的解决方案没有奏效,是因为虽然加入typename
上面的代码工作,但它并没有对下面的代码工作:
#include<hash_map>
class CWItems
{
typedef stdext::hash_map < unsigned long, CWksItem* > CItem;
CItem mItems;
所以我我以为我到处添加typename
就是在做错事。使用typename
在此代码typedef
导致此错误后:
error C2899: typename cannot be used outside a template declaration
没有typename
,所示的误差是error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
,在CItem mItems;
线。
[使用模板参数中定义的类型]可能的重复(http://stackoverflow.com/questions/741597/using-types-defined-in-template-arguments) – 2012-03-21 08:40:12
有用的链接你张贴。我的问题仍然没有解决。已编辑我的问题以添加更多信息。帮帮我? – Nav 2012-03-21 09:10:32
'CWItems'不是一个类模板,所以你不能有任何依赖名称。 “CWksItem”在哪里申报? – 2012-03-21 09:46:53