继承似乎无法正常工作

Inheritence doesn't seem to be working properly

本文关键字:工作 常工作 继承      更新时间:2023-10-16

所以我有3个文件用于我的作业,这个问题与作业无关,但我想弄清楚为什么我要用作作业基础的代码编译不正确。

因此,首先在文件(linkedList.h)中有一个抽象类(linkedListType),可以在这里找到:>http://pastebin.com/STGHvdDs>

然后类unorderedLinkList从中继承(在文件unorderedLinkedList.h中),可以在这里找到http://pastebin.com/yyv5vT7i

没有单独的.cpp文件,所有文件都在.h文件中。

当我编译主程序/测试程序时(只是为了在开始作业之前看看我会遇到什么错误),我会遇到很多类似的错误:

unorderedLinkedList.h:在成员函数"bool unorderedLinkedList::search(const Type&)const"中:unorderedLinkedList.h:46:错误:未在此作用域中声明"first"unorderedLinkedList.h:在成员函数"void unorderedLinkedList::insertFirst(const Type&)"中:unorderedLinkedList.h:66:错误:未在此作用域中声明"first"*

它们都围绕着这一点("未在范围内声明")。

有人建议对变量使用linkedListType::access方法(在linkedListType中定义为private),但这对解决这个问题没有任何帮助。

请帮帮我,这样我就可以快点做我不能做的家庭作业了,直到我知道为什么这不起作用。所以你不要以为我是想让你帮我做作业:我的作业是写教授给出的几种方法来操作链表

谢谢!

您的问题是,您试图将名称first作为一个独立名称访问,而该名称在作用域中找不到:类模板不会查看模板基类以查找名称,除非该名称成为依赖名称。非依赖名称在第一阶段查找期间解析,此时基类是未知的(可以专门化为具有完全不同的布局)。在第二阶段查找期间查找从属名称。

因此,您需要使用例如使名称first成为从属名称

  1. this->first
  2. linkedListType<T>::first

我个人倾向于使用this->,因为它很好地说明了实际含义,而且如果成员的位置发生变化,它也不需要更改。

准备导致此问题的变量->船长疏忽https://stackoverflow.com/users/845568/captain-obvlious我应该为这个答案得到赞扬,我很感激他,但我不小心删除了他的答案,而不是点击接受(不过我把笔记本电脑从咖啡里救了出来)。