所以我有 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:错误:未在此范围内声明“第一”
unorderedLinkedList.h:在成员函数“void unorderedLinkedList::insertFirst(const Type&)”中:
unorderedLinkedList.h:66: 错误:“first”未在此范围内声明*
它们都围绕着这一点('未在范围内声明')。
有人建议对变量使用linkedListType::访问方法(在linkedListType 中定义为私有(private)),但这对解决这个问题没有任何帮助。
请帮忙,这样我就可以快点实际完成我无法完成的部分作业,直到我知道为什么这不起作用。所以你不会觉得我想让你帮我做作业:我的作业是写几个教授给的方法来操作链表。
谢谢!
最佳答案
您的问题是您尝试访问名称 first
作为在范围内找不到的独立名称:类模板不会查看模板化的基类来查找名称,除非该名称是从属名称。在第一阶段查找期间解析非依赖名称,此时基类是未知的(它可以专门用于具有完全不同的布局)。在第二阶段查找期间查找从属名称。
因此,您需要将名称设为 first
使用的从属名称,例如,
this->first
linkedListType<T>::first
我个人的偏好是使用
this->
因为这很好地说明了实际含义,并且如果成员的位置发生变化,也不需要更改。
关于c++ - 继承似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578963/