c++ - 继承似乎无法正常工作

标签 c++ inheritance compiler-errors

所以我有 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/

    相关文章:

    c++ - Windows std::fstream在open()之后修改文件吗?

    c++ - 基于 vector 获取范围内的项目索引

    C++ 模板函数字符串类型不匹配?

    java - 为什么创建此对象的实例会更改另一个对象的实例变量?

    c++ - 尝试调用方法: request for a member which is of a non-class type时出错

    c++ - Constexpr 指针值

    java - 继承中的静态变量

    Python:我应该在这里使用委托(delegate)还是继承?

    java - Unresolved 编译问题 : The type java. lang.String 无法解析。隐式构造函数 Object() 未定义

    c++ - 在 Windows : Cannot open include file: 'Magick++.h' : No such file or directory 中编译 ZBar 示例时出错