错误:预期的嵌套名称说明符 [英] error: expected nested-name-specifier

查看:155
本文介绍了错误:预期的嵌套名称说明符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我尝试编译一个2岁的项目(用g ++成功编译

3.3,如果我没记错的话)。


但现在用g ++ -gcc来解决问题4.2.3:

#include< list>

#include< ; hash_map>


模板< class>

class ListPtr;


模板< class T>

class ListPtrIterator {


public:

ListPtrIterator(ListPtr< T> * _user):

M_user (_user),

M_cur(M_user-> begin()){}


bool

cur(T *& ;);


bool

重置(无效){

M_cur = M_user-> begin();

返回M_cur!= M_user-> end();

}


private:

ListPtr< T> * M_user;

typename list< T *> :: iterator M_cur;

^^^^

错误:''list'之前的预期嵌套名称说明符'

};


请你知道这是什么问题吗?

在typename中有什么变化语法?


谢谢,


Fabrice

解决方案




我没有看到


使用命名空间std;


in你的代码?


问候,Ron AF Greve

http://www.InformationSuperHighway.eu


" Fab" < fa ************* @ free.frwrote in message

news:d2 ***************** ***************** @ n20g2000 hsh.googlegroups.com ...





我尝试编译一个2岁的项目(用g ++成功编译

3.3,如果我没记错的话)。


但是现在用g ++ -gcc来解决问题4.2.3:

#include< list>

#include< hash_map>


模板< class>

class ListPtr;


模板< class T>

class ListPtrIterator {


public:

ListPtrIterator(ListPtr< T> * _user):

M_user(_user),

M_cur(M_user-> begin()){}


bool

cur(T *&);

bool

重置(无效){

M_cur = M_user-> begin();

返回M_cur!= M_user - >结束();

}


私人:

ListPtr< ; T> * M_user;

typename list< T *> :: iterator M_cur;

^^^^

错误:''list'之前的预期嵌套名称说明符'

};


请你知道这是什么问题吗?

在typename中有什么变化语法?


谢谢,


Fabrice



< blockquote> Fab写道:





我尝试编译一个2岁的项目(用g ++编译成功

3.3,如果我没记错的话。)


但现在用g ++ -gcc 4.2.3:


typename list< T *> :: iterator M_cur;

^^^^

错误:''list'之前的预期嵌套名称说明符'

};



应该是std :: list


旧的gcc版本接受全局命名空间中的标准容器。 />

-

Ian Collins。


Ron AF Greve写道:

[请不要发帖]





我什么也看不见a


使用命名空间std;

代码?



你也不应该,如果这是一个标题...


-

Ian Collins。


Hi,

I try to compile a 2 years old project (successfully compiled with g++
3.3, if I correctly remember ).

But get problems now with g++ -gcc 4.2.3 :

#include <list>
#include <hash_map>

template<class>
class ListPtr;

template<class T>
class ListPtrIterator {

public:
ListPtrIterator( ListPtr< T >* _user ):
M_user( _user ),
M_cur( M_user->begin() ) {}

bool
cur( T*& );

bool
reset( void ) {
M_cur =M_user->begin();
return M_cur!=M_user->end();
}

private:
ListPtr< T >* M_user;
typename list< T* >::iterator M_cur;
^^^^
ERROR: expected nested-name-specifier before ''list''
};

Please do you know what''s the problem ?
Has something changed in "typename" syntax ?

Thanks,

Fabrice

解决方案

Hi,

I don''t see a

using namespace std;

in your code?

Regards, Ron AF Greve

http://www.InformationSuperHighway.eu

"Fab" <fa*************@free.frwrote in message
news:d2**********************************@n20g2000 hsh.googlegroups.com...

Hi,

I try to compile a 2 years old project (successfully compiled with g++
3.3, if I correctly remember ).

But get problems now with g++ -gcc 4.2.3 :

#include <list>
#include <hash_map>

template<class>
class ListPtr;

template<class T>
class ListPtrIterator {

public:
ListPtrIterator( ListPtr< T >* _user ):
M_user( _user ),
M_cur( M_user->begin() ) {}

bool
cur( T*& );

bool
reset( void ) {
M_cur =M_user->begin();
return M_cur!=M_user->end();
}

private:
ListPtr< T >* M_user;
typename list< T* >::iterator M_cur;
^^^^
ERROR: expected nested-name-specifier before ''list''
};

Please do you know what''s the problem ?
Has something changed in "typename" syntax ?

Thanks,

Fabrice



Fab wrote:

Hi,

I try to compile a 2 years old project (successfully compiled with g++
3.3, if I correctly remember ).

But get problems now with g++ -gcc 4.2.3 :

typename list< T* >::iterator M_cur;
^^^^
ERROR: expected nested-name-specifier before ''list''
};

Should be std::list

Old gcc versions accepted standard containers in the global namespace.

--
Ian Collins.


Ron AF Greve wrote:

[please don''t top post]

Hi,

I don''t see a

using namespace std;
in your code?

Nor should you, if this is from a header...

--
Ian Collins.


这篇关于错误:预期的嵌套名称说明符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆