关于模板类中,子类无法访问父类成员问题的解决方法
问题:
今天研究数据结构,按着书敲代码,发现子类中直接调用父类成员居然无法通过编译。
看了好久都没发现问题,尝试将父类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
关于模板类中,子类无法访问父类成员问题的解决方法相关推荐
- win10提示“无法枚举容器中的对象 访问被拒绝”终极解决方法(被这东西恶心的,芽儿呦,一怒发博)
先看看困难户按照网上统一的标准解决方案依旧未解决的方法: 标准的右击文件,选择"属性"--"安全"--"高级":(注意,下图解决不了的记得看 ...
- 无法枚举容器中的对象,访问被拒绝的解决方法
1.右键>属性>安全(选择当前用户)>高级>所有者更改为当前所有者就可解决 转载于:https://www.cnblogs.com/fogwang/p/4723760.html
- java子类访问父类私有成员_Java中子类可以继承父类的私有成员,但是不能(直接)访问!!!...
今天学习Java三大特征之一:继承的时候,产生了一些疑问,最后通过网上查找和各位网友的帮助,终于拔开云雾见日出.下面进入正题: 首先:子类对象拥有父类中的所有属性和方法:在这里,很多人会问构造器可以继 ...
- c 子类对象 访问父类对象受保护成员_看了这个,你就会搞对象了
今天我们来聊聊面向对象的一些事情. 什么是面向对象?简单的来讲,面向对象是一种程序设计的思想,一种分析和解决问题的方式.如果说世间每一个事物,都是一个独一无二的个体,那么这个个体就是一个对象--你的女 ...
- c 子类对象 访问父类对象受保护成员_java面向对象总结
前言:文章参考<java疯狂讲义>进行总结和归纳,知识要进行输出才算真正的有用. 在java的世界里,一切皆为对象,类是对对象的抽象,来一个例子:Person类 public 有了类,就可 ...
- 在java继承机制中 父类中的私有_Java中子类能继承父类的私有属性吗?
前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先 ...
- java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
java为了解决相似属性和行为能共用相同的代码,也是为了便于标准模块化.减少相同代码要多次重复编写的问题,提供了继承.重载和覆盖的功能.继承是针对类,重载和覆盖是针对方法的. 一.继承:为了便于理解. ...
- python在多继承中子类调用某个父类的同名方法之 super讲解(mro机制)***
目录 2. 钻石继承遇到的难题 3. 针对钻石问题各语言的解决方法 3.1. C++ 3.2. Java 3.3. Ruby 3.4. Python 4. super的内核:mro 5. ...
- java 类中有几种访问权限_类中成员的访问权限_Java语言程
类中成员的访问权限_Java语言程 4.7.2 类中成员的访问权限 Java将类中成员(成员变量和成员方法)的访问权限(可见性)划分为4种情况,按照访问权限的范围大小从小到大列出如下. ·私有(pri ...
- C++模板类中使用静态成员变量(例如Singleton模式)
一个最简单Singleton的例子: / Test.h / template <class _T> class CTest { private: _T n; static CTest< ...
最新文章
- 通过示波器数据进行正弦信号参数估计
- linux中的date的用法
- abap 给用户分配事物代码权限_【第五篇】SAP ABAP7.50 之用户接口
- Python距离计算
- JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福
- tcp伪报头_TCP和UDP报头的比较
- mysql数据库replace写入_MySQL数据库replace into 用法(insert into 的增强版)
- checkbox修改默认样式
- 聊聊Elasticsearch RestClient的RequestLogger
- 使用Exchange 2007搭建多域名邮件系统
- 政考网:怎样考取公务员上岸?
- 人人开源代码生成器的使用
- pip安装教程 python(针对于Windows系统)
- 一纵一横,搭建完整数据分析体系
- Latex 三级子标题\subsubsection{xxx}后面内容不换行 要注意
- 达芬奇密码 第八十二章
- 【C++】复制省略(Copy elision)
- 数据结构:项目三、算术表达式求解
- win10如何更改计算机用户名,手把手教你win10下怎么修改账户用户名
- 腾讯云对象存储 COS 荣获对象存储领导力奖!!!