问题:

今天研究数据结构,按着书敲代码,发现子类中直接调用父类成员居然无法通过编译。

看了好久都没发现问题,尝试将父类private属性改为public,发现也是不行。

解决办法:

然后我想着用域作用符,居然可以。

在网上搜了一下,发现用this指针,也是可以解决这个问题的。

//
//  List.h
//  HelloWorld
//  csdn blog:http://blog.csdn.net/u012175089
//  Created by feiyin001 on 17/1/7.
//  Copyright (c) 2017年 FableGame. All rights reserved.
//#ifndef __HelloWorld__List__
#define __HelloWorld__List__namespace Fable
{template<typename Object>class List{private:struct Node{Object data;};public:class const_iterator{private:Node* current;Object& retrieve()const{return current->data;}};class iterator: public const_iterator{public:Object& operator*(){//return retrieve();  无法通过编译//return const_iterator::retrieve(); 可以通过编译return this->retrieve();}iterator* operator++(){//current = current->next;无法通过编译//const_iterator::current = const_iterator::current->next; 可以通过编译this->current = this->current->next;return *this;}};};
}
#endif /* defined(__HelloWorld__List__) */

原因:

对于一些编译器,例如gcc和xcode,在扫描模板类的定义的时候,就先确定每一个成员都是在哪里声明的。

但是VC++把这件事放倒了实例化的时候,而具体的顺序C++标准实际上是没有规定的。

我正在用的电脑是MacBook,xode是没有解决这个问题的,有空试试VS才行。

转载于:https://www.cnblogs.com/fablegame/p/6430214.html

关于模板类中,子类无法访问父类成员问题的解决方法相关推荐

  1. win10提示“无法枚举容器中的对象 访问被拒绝”终极解决方法(被这东西恶心的,芽儿呦,一怒发博)

    先看看困难户按照网上统一的标准解决方案依旧未解决的方法: 标准的右击文件,选择"属性"--"安全"--"高级":(注意,下图解决不了的记得看 ...

  2. 无法枚举容器中的对象,访问被拒绝的解决方法

    1.右键>属性>安全(选择当前用户)>高级>所有者更改为当前所有者就可解决 转载于:https://www.cnblogs.com/fogwang/p/4723760.html

  3. java子类访问父类私有成员_Java中子类可以继承父类的私有成员,但是不能(直接)访问!!!...

    今天学习Java三大特征之一:继承的时候,产生了一些疑问,最后通过网上查找和各位网友的帮助,终于拔开云雾见日出.下面进入正题: 首先:子类对象拥有父类中的所有属性和方法:在这里,很多人会问构造器可以继 ...

  4. c 子类对象 访问父类对象受保护成员_看了这个,你就会搞对象了

    今天我们来聊聊面向对象的一些事情. 什么是面向对象?简单的来讲,面向对象是一种程序设计的思想,一种分析和解决问题的方式.如果说世间每一个事物,都是一个独一无二的个体,那么这个个体就是一个对象--你的女 ...

  5. c 子类对象 访问父类对象受保护成员_java面向对象总结

    前言:文章参考<java疯狂讲义>进行总结和归纳,知识要进行输出才算真正的有用. 在java的世界里,一切皆为对象,类是对对象的抽象,来一个例子:Person类 public 有了类,就可 ...

  6. 在java继承机制中 父类中的私有_Java中子类能继承父类的私有属性吗?

    前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先 ...

  7. java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...

    java为了解决相似属性和行为能共用相同的代码,也是为了便于标准模块化.减少相同代码要多次重复编写的问题,提供了继承.重载和覆盖的功能.继承是针对类,重载和覆盖是针对方法的. 一.继承:为了便于理解. ...

  8. python在多继承中子类调用某个父类的同名方法之 super讲解(mro机制)***

    目录 2.   钻石继承遇到的难题 3.   针对钻石问题各语言的解决方法 3.1. C++ 3.2. Java 3.3. Ruby 3.4. Python 4.   super的内核:mro 5.  ...

  9. java 类中有几种访问权限_类中成员的访问权限_Java语言程

    类中成员的访问权限_Java语言程 4.7.2 类中成员的访问权限 Java将类中成员(成员变量和成员方法)的访问权限(可见性)划分为4种情况,按照访问权限的范围大小从小到大列出如下. ·私有(pri ...

  10. C++模板类中使用静态成员变量(例如Singleton模式)

    一个最简单Singleton的例子: / Test.h / template <class _T> class CTest { private: _T n; static CTest< ...

最新文章

  1. 通过示波器数据进行正弦信号参数估计
  2. linux中的date的用法
  3. abap 给用户分配事物代码权限_【第五篇】SAP ABAP7.50 之用户接口
  4. Python距离计算
  5. JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福
  6. tcp伪报头_TCP和UDP报头的比较
  7. mysql数据库replace写入_MySQL数据库replace into 用法(insert into 的增强版)
  8. checkbox修改默认样式
  9. 聊聊Elasticsearch RestClient的RequestLogger
  10. 使用Exchange 2007搭建多域名邮件系统
  11. 政考网:怎样考取公务员上岸?
  12. 人人开源代码生成器的使用
  13. pip安装教程 python(针对于Windows系统)
  14. 一纵一横,搭建完整数据分析体系
  15. Latex 三级子标题\subsubsection{xxx}后面内容不换行 要注意
  16. 达芬奇密码 第八十二章
  17. 【C++】复制省略(Copy elision)
  18. 数据结构:项目三、算术表达式求解
  19. win10如何更改计算机用户名,手把手教你win10下怎么修改账户用户名
  20. 腾讯云对象存储 COS 荣获对象存储领导力奖!!!

热门文章

  1. 二十五、JAVA多线程(二、吃苹果案例)
  2. ThreadPoolExecutor 线程池理论、饱和策略、工作队列排队策略
  3. Vue—实例成员computed和watch
  4. 日志模块logging
  5. Java8与传统的日期和时间类详解
  6. Winform 按钮权限拦截AOP
  7. PCL Save VTK File With Texture Coordinates 使用PCL库来保存带纹理坐标的VTK文件
  8. toj 4069 简易统计
  9. c# 获取docx中的内容
  10. java中static和final修饰符