`
javaFlood
  • 浏览: 10526 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

继承c++ template类的时候找不到基类protected成员定义

 
阅读更多
翻了好多地方,有人说在成员前面加this->可以解决,果然可以,但一直不明白原因,
代码:
#include <iostream>
#include <map>
#include <string>
#include <deque>
#include <vector>

using namespace std;

template <class T>
class b {
public:
    b(){}
    b(T i){
        x.push_back(i);
    }  
    void print(){
        if(x.size()>0)
            cout<<x[0]<<endl;
    }  
protected:
    vector<T> x;
};

template <class T>
class e: public b<T>{
public:
    e(T i):b<T>(i){
    }  
    void print(){
        if(this->x.size()>0)//这里要加this->或者b<T>::
            cout<<this->x[0]<<endl;
    }  
};
int main()
{
    e<int> a(1);
    a.print();
}
在http://forum.ubuntu.org.cn/viewtopic.php?t=240044上有人解释了说是编译器偷懒的原因
分享到:
评论

相关推荐

    c++类和对象习题答案

    在这个“C++类和对象习题答案”中,我们可能看到关于类的设计、对象的创建、成员函数的使用、继承、多态等关键概念的练习和解答。 1. **类的定义与对象的创建** - 类定义:类通过`class`关键字创建,它包含数据...

    C++类与对象PPT

    在C++中,类的定义通常包含数据成员(或成员变量)和成员函数(或方法)。例如,`class CCompanyStaff`定义了一个名为`CCompanyStaff`的类,它有工作编号`m_iStaffNum`、姓名`m_cName`、出勤率`m_fRateOfAttend`和...

    浙江大学《C++》九套期末模式复习题(含答案).pdf

    在C++中,公有继承(public inheritance)时,基类中的public成员在派生类中仍然是public的(A),而private成员在派生类中不可访问(B)。基类中的protected成员在派生类中仍然是protected(C)。私有继承(private...

    c++题库面向 对象

    16. 基类的静态成员(static members)和私有构造函数(private constructors)不能被派生类继承。 17. 类temp的复制构造函数的原型声明语句通常是 `temp(const temp &other);` 18. 设置友元函数的目的是为了使非...

    吉林大学2002级C++面向对象程序设计试题答案

    类中可以定义成员变量和成员函数,成员变量用于存储数据,成员函数用于实现操作。 六、继承和多继承 在C++中,继承是一种机制,子类可以继承父类的成员变量和成员函数。多继承是一种特殊的继承方式,子类可以继承...

    C++类之间的关系2.zip

    C++通过访问修饰符(public, private, protected)实现封装,其中public成员对外界可见,private成员只对类自身可见,protected则对子类可见。 4. **抽象类(Abstract Class)与纯虚函数**: 抽象类不能被实例化,...

    后端 / C++ 类 封装 继承 多态 stl容器 虚函数 纯虚函数 友元函数 模板

    1. **类(Class)**:类是C++中面向对象编程的基础,它定义了一组数据(成员变量)和操作这些数据的方法(成员函数)。通过创建类,程序员可以构建复杂的数据结构和抽象概念,使代码更易于理解和维护。 2. **封装...

    四川大学大二计算机专业C++面向对象程序设计试卷及答案 (1).pdf

    - 继承类型:包括public、private和protected三种方式,它们定义了基类成员在派生类中的访问权限。 - 多态性:通过虚函数实现,允许派生类对象对基类指针或引用来进行操作时,执行派生类版本的方法。 3. C++特殊...

    吉林大学2002级C++面向对象程序设计试题

    ,那么通过Derived类的实例对象,无论如何也访问不到基类Base中的成员变量x的值。** - **解析:**正确。无论在哪种继承方式下,私有成员都是不可见的,因此无法直接访问。 7. **在静态成员函数的实现代码体内不能...

    C++ 面试题常考,封装,继承,多态.zip

    在C++中,我们通过类(class)来实现封装,定义私有(private)、保护(protected)和公有(public)成员。私有成员只能在类内部访问,保护成员允许子类访问,而公有成员可以被外部代码调用。封装的目的是隐藏实现...

    C++课程-2_类与对象

    `public`成员可以在类的任何地方访问,`private`成员只能在类的内部访问,`protected`成员则对子类可见。合理的访问控制有助于封装,防止意外修改重要数据。 4. **构造函数与析构函数**: 构造函数是在创建对象时...

    对C++的特点,类和继承,STL与泛型编程,库的设计等沉思录

    - **公有继承**:基类的公有成员和受保护成员在派生类中保持其访问属性。 - **私有继承**:基类的所有成员在派生类中都变为私有。 - **受保护继承**:基类的公有成员和受保护成员在派生类中变为受保护。 ### STL与...

    湖大2009年C++笔试试卷 A卷

    5. 类模板关键字:在C++中,定义类模板时使用的关键字是`template`,选项D正确。 6. 访问权限属性:C++的访问权限包括公有(`public`)、保护(`protected`)和私有(`private`),非类成员没有这些属性,选项A正确。 7....

    C++技术内幕,C语言类

    C++中的继承是面向对象编程的一个重要特性,它允许一个类(派生类)从另一个类(基类)中继承属性和行为。这使得代码重用变得更加高效,同时支持多态性,即不同类型的对象可以对同一消息作出不同的响应。书中会讲解...

    大学C++《面向对象程序设计I》所有实验报告

    在C++中,对象是类的实例,类定义了对象的属性(数据成员)和行为(成员函数)。通过类的定义,我们可以创建多个具有相同结构的对象,实现代码复用。 二、封装 封装是面向对象的核心特性之一,它隐藏对象内部的实现...

    C++面向对象

    - **保护继承**(Protected): 基类的公有成员和保护成员都成为派生类的保护成员。 - **私有继承**(Private): 基类的公有成员和保护成员都成为派生类的私有成员。 - **继承性**: - 私有成员: 派生类无法访问基类的...

    c++学习

    1. **类和对象的定义**(实验3 类和对象的定义2.docx):C++中的类是对象的蓝图,它定义了一组数据成员(变量)和成员函数(方法)。对象则是类的具体实例。在C++中,通过`class`关键字创建类,并使用`public`、`...

    c++primer学习笔记(转)

    此外,C++类的成员可以使用访问修饰符public、protected和private来控制对成员的访问权限。 最后,C++标准库中包含了大量的范型算法,这些算法可以在各种容器类型中使用,如vector、list等。这些算法通常使用迭代器...

    面向对象程序设计c++课件

    本课件旨在帮助学习者掌握C++中的面向对象概念,包括类、对象、封装、继承、多态等核心概念。 1. **类与对象**: - **类**:类是C++中定义数据类型的方式,它描述了一组具有相同属性和行为的对象的模板。在类中,...

Global site tag (gtag.js) - Google Analytics