C++实现Node类双向链表编译报错value_type does not name a type求助
错误原因
value_type是你在Node类内部定义的类型别名,仅在Node类的作用域内可直接使用。在类外实现成员函数时,返回值的声明位置处于类作用域之外,编译器无法识别未加作用域限定的value_type,因此抛出"does not name a type"的错误。- 你报错的代码行里
return data&;属于笔误,&放在变量后是取地址语法,放在此处不符合返回引用的要求,会额外导致编译报错。
修复方案
- 给Node.cpp里
get_data函数的返回值加上Node::作用域限定,将原来的写法:
value_type& Node::get_data() const {return data;}
修改为:
Node::value_type& Node::get_data() const {return data;}
- 确认return语句语法正确,直接返回
data即可,不要在后面多写&。
额外说明
你代码里其他成员函数(比如构造函数、set_data)的参数里用到的value_type不需要加限定,是因为参数列表和函数体已经处于Node类的作用域内,编译器可以自动识别到类内部的typedef定义,只有返回值的声明位置在类作用域之外,需要单独加限定。
另外EToll.cpp开头的注释误写为// EToll.h,属于不影响编译的笔误,可按需修改。
内容的提问来源于stack exchange,提问作者Daniel Dinosaur
相关产品推荐
相关产品推荐

