首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

访问派生类中的基类受保护数据成员向量给出错误139

错误139是指访问派生类中的基类受保护数据成员向量时出现的错误。在面向对象编程中,派生类可以继承基类的成员,包括公有、保护和私有成员。保护成员可以被派生类访问,但不能被外部类或对象访问。

当出现错误139时,可能是因为在派生类中访问了基类的受保护数据成员向量,但没有正确的访问权限。这通常是因为在派生类中使用了错误的访问方式或没有正确继承基类的成员。

为了解决错误139,可以采取以下步骤:

  1. 确保派生类正确继承了基类的成员。在派生类的定义中使用关键字"public"或"protected"来指定继承方式。例如,如果基类名为BaseClass,派生类名为DerivedClass,则正确的继承方式为:class DerivedClass : public BaseClass。
  2. 确保在派生类中使用正确的访问方式来访问基类的受保护数据成员向量。在派生类的成员函数或友元函数中,可以使用基类名加上作用域解析运算符"::"来访问基类的成员。例如,如果基类中有一个受保护的数据成员向量名为protectedVector,可以使用BaseClass::protectedVector来访问。
  3. 如果派生类中需要对基类的受保护数据成员向量进行修改或访问,可以考虑使用基类提供的公有成员函数或友元函数来实现。通过公有成员函数或友元函数,可以在派生类中间接地访问和修改基类的受保护数据成员向量。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供可扩展的计算能力,满足各种业务需求。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:提供高性能、可扩展的MySQL数据库服务。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。详情请参考:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《C++Primer》第十五章 面向对象程序设计

首先初始化部分,然后按照声明顺序依次初始化派生类成员。 2.2 派生类使用成员 派生类可以直接访问公有成员保护成员。...保护成员 一个protected关键字声明它希望与派生类分享但是不想被其他公共访问使用成员: 和私有成员类似,保护成员对于用户来说不可访问 和公有成员类似,保护成员派生类成员和友元来说是可访问...派生类成员或者友元只能通过派生类对象来访问保护成员派生类对于一个对象保护成员没有任何访问特权 理解最后一条规则可以参考如下例子: class Base { protected:.../ 错误:clobber不能访问Baseprotected成员 void clobber(Base &b) { b.port_mem = 0; } 派生类成员和友元函数只能访问派生类对象部分保护成员...公有、私有和保护继承 某个对继承而来成员访问权限收到两个因素影响:一个是成员访问说明符,第二个是在派生类派生列表访问说明符。

1.2K20

C++ 继承与派生

3.继承方式包括:public(公用继承),private(私有继承),protected(保护),而不同继承方式将影响派生类成员访问属性。...公用继承 如果采用公用继承,访问属性在派生类中保持不变,即: 私有属性——派生类私有属性 共用属性——派生类中共用属性 保护属性——派生类保护属性 class...(); 私有继承 如果采用私有继承,访问属性在派生类中发生如下变化,即: 私有属性——派生类不可访问 共用属性——派生类私有属性 保护属性——派生类私有属性...如果采用保护继承,访问属性在派生类中发生如下变化,即: 私有属性——派生类不可访问 共用属性——派生类保护属性 保护属性——派生类保护属性 class...,函数保护就没有与外界接口了,在这里仅仅作为例子) 在这个例子派生类Student1私有成员为: int age; 共有成员为: myshow1(); 保护成员为:

1.1K80

【干货】C++基础知识:继承与派生详解

, 在Rect也是保护, 所以可以访问 // 而通过公有继承私有的成员, 在派生类是不可被访问 void showRect() { cout << "x = "...在根<em>类</em><em>中</em>,对于<em>成员</em><em>的</em><em>访问</em>级别有三种:public、protected、private 在<em>派生类</em><em>中</em>,对于<em>成员</em><em>的</em><em>访问</em>级别有四种:public(公有)、protected(<em>受</em><em>保护</em>)、private(私有)、...<em>基</em><em>类</em><em>的</em>公有<em>成员</em>在<em>派生类</em><em>中</em>仍然是公有的 <em>基</em><em>类</em><em>的</em><em>保护</em><em>成员</em>在<em>派生类</em><em>中</em>仍然是<em>受</em><em>保护</em><em>的</em> <em>基</em><em>类</em><em>的</em>不可<em>访问</em><em>的</em><em>成员</em>在<em>派生类</em><em>中</em>仍然是不可<em>访问</em><em>的</em> <em>基</em><em>类</em><em>的</em>私有<em>成员</em>在<em>派生类</em><em>中</em>变成了不可<em>访问</em><em>的</em> 总结:在公有派生<em>的</em>情况下,通过<em>派生类</em>自己<em>的</em><em>成员</em>函数可以<em>访问</em>继承过来<em>的</em>公有和<em>保护</em><em>成员</em>...(3)私有派生 通过私有派生,<em>基</em><em>类</em><em>的</em>私有和不可<em>访问</em><em>成员</em>在<em>派生类</em><em>中</em>是不可<em>访问</em><em>的</em>,而公有和<em>保护</em><em>成员</em>这里就成了<em>派生类</em><em>的</em>私有<em>成员</em>。...限制了<em>数据</em><em>成员</em>和<em>成员</em>函数<em>的</em><em>访问</em>权限,因此在实际中<em>保护</em>派生用得也不多。 比如:我们在上个例子<em>中</em>,Rect<em>类</em><em>保护</em>派生于Point,则在Test<em>类</em><em>中</em>Point::show();就可以使用啦!

81520

C++:43---派生类转换、静态动态变量

二、转换本质 派生类可以转换为本质是: ①为什么派生类可以转换为派生类而来,因此派生类包含了方法和成员。...三、继承方式对类型转换影响 遵循下面3个规则: 假设B继承于A ①只有当B公有地继承A时,用户代码才能使用派生类转换;如果B是保护/私有的继承于A,则不能使用派生类转换 因为保护或者私有继承...,因为为保护继承 return 0; } ③如果B继承于A方式是公有的或者保护,则B派生类成员和友元可以使用B向A类型转换;如果B继承于A方式是私有的,则不能 class A{}; class...,那么调用时候也取决于左边类型 转换之后,只能通过派生类访问属于自己(那一部分,而不能访问属于派生类数据成员(见下面演示案例③) 虚函数调用是个例外:虚函数调用是取决于指针或引用所指向类型...//错误,num属于B,而A内不含有此成员 return 0; } 七、其他情境下类型转换 当我们用一个派生类对象为一个对象初始化或赋值时,只有该派生类对象部分会被拷贝、移动或赋值

1.6K10

《挑战30天C++入门极限》C++继承与多重继承访问控制

C++继承与多重继承访问控制   在前面的练习我们一直在使用public继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论...,派生类不能访问私有成员 } }; class ControlProtectedClass:public ProtectedClass//以public方式继承ProtectedClass...,私有成员对文件区域与派生类区域都是不可访问 } }; class ControlPrivateClass:public PrivateClass//以public方式继承...,派生类不能操作私有成员 } }; class ControlPublicClass:public PublicClass//以public方式继承PublicClass...、保护继承与私有继承区别与特点已经了解,最后再提醒一下读者,在继承关系private成员不但对应用程序隐藏,即使是派生类也是隐藏不可访问,而保护成员只对应用程序隐藏,对于派生类来说是不隐藏

51710

cpp继承那些事(上)

公有继承并不会改变成员访问权限,保护继承和私有继承会把公有和保护访问权限分别修改为保护和私有的 2....//私有继承下,原公有或者保护成员, //都在子类变为了私有成员,再往下继承,就会不可访问 //保护继承下,原公有或者保护成员, //在子类中都是保护数据,再往下继承,还能在内继续访问...return 0; } 0x03 关于继承重定义问题 当两个存在继承关系时: 派生类有同名成员变量或者成员函数,在派生类实例化对象时候,访问派生类自己成员。...如果派生类存在同名成员函数,但是参数列表不同,那么只能访问子类成员函数 {% note info modern %}无论是函数名同名,还是变量名同名,还是函数和变量名同名,或是函数参数不一样...,都会发生重定义,标识符都会被隐藏,只能访问派生类自己成员,如果想要使用同名成员,那么需要使用域作用符来指定作用域。

41210

C++一分钟之-成员访问控制:public, private, protected

用途:通常用于接口部分,如成员函数和需要外部直接操作数据成员。 private(私有) 含义:私有的,仅在内部可访问。 用途:隐藏实现细节,保护数据安全,实现封装。...protected(保护) 含义:介于public和private之间,protected成员派生类访问,但外界无法直接访问。...忽视继承访问权限变化 问题:错误地认为protected或private成员派生类中会变为public。...避免:了解并牢记继承访问权限规则,private成员派生类仍然是不可访问,而protected成员派生类变为可访问。 3....(); // 通过public函数间接访问protected成员 return 0; } 小结 成员访问控制是C++面向对象编程维护数据安全和实现封装重要机制。

26410

C++ 多级继承与多重继承:代码组织与灵活性平衡

成员函数和属性};在这个例子,DerivedClass 从 BaseClass1 和 BaseClass2 继承。这意味着它将继承这两个所有属性和非私有成员函数。...脆弱性: 对更改可能会意外影响派生类,导致代码错误。菱形继承问题菱形继承是指一个从两个继承,这两个又有一个共同情况。...缺点复杂性: 多重继承会导致层次结构变得复杂,难以理解和维护。歧义问题: 当多个提供相同名称或功能成员时,可能会导致歧义问题。脆弱性: 对更改可能会意外影响派生类,导致代码错误。...访问控制规则在多重继承访问控制规则遵循以下原则:公有继承: 派生类继承所有公有成员保护成员。私有继承: 派生类不能继承任何私有成员。...保护继承: 派生类继承所有保护成员,但这些成员派生类变为私有。总结多重继承是一种强大 OOP 工具,可用于创建复杂层次结构。但是,它也存在一些缺点,例如复杂性和菱形继承问题。

12810

后台开发:核心技术与应用实践 -- C++

成员派生类访问属性: 公用继承(public inheritance):公用成员保护成员派生类中保持原有访问属性,其私有成员仍为私有 私有继承(private inheritance...):公用成员保护成员派生类成了私有成员,其私有成员仍为私有 保护继承(protected inheritance):公用成员保护成员派生类成了保护成员,其私有成员仍为私有...保护成员意思是,不能被外界引用但可以被派生类成员引用。 综上,可以视为访问权限与派生类继承方式叠加最小访问权限。...同时,无论哪一种继承方式,在派生类是不能访问私有 成员,私有成员只能被本类成员函数所访问,毕竟派生类不是同一个 构造派生类对象时,必须对数据成员、新增数据成员成员对象数据成员进行初始化...(自左向右),而与在派生类构造函数成员初始化列表给出顺序无关。

1.3K10

C++ 访问修饰符

Contents 1 公有成员(public) 2 私有成员(private) 3 保护成员(protected) 4 继承特点 5 参考资料 数据封装是面向对象编程一个重要特点,它防止函数直接访问类型内部成员...class Base { public: // 公有成员 protected: // 保护成员 private: // 私有成员 }; 公有成员(public) 公有成员在程序外部是可访问... public 成员,protected 成员,private 成员访问属性在派生类中分别变成:protected, protected, private private 继承: public...(内)和友元访问,不能被派生类访问; protected 成员可以被派生类访问。...成员 不可见 非私有长远在子类访问属性不变 protected继承 变为protected成员 变为protected成员 不可见 非私有成员都为子类保护成员 private继承 变为private

47230

TypeScript 官方手册翻译计划【十二】:

通常情况下,最好将索引数据存储在另一个位置,而不是实例本身。 继承 和其它面向对象语言一样,JavaScript 可以继承自。...protected 保护(protected)成员只在子类可见。...公开保护成员 派生类需要遵循其约束,但可以选择公开具有更多功能子类。...跨层级访问保护成员 对于通过一个引用访问保护成员是否合法,不同 OOP 语言之间存在争议: class Base { protected x: number = 1; } class...关于 C# 为什么会认为这段代码是不合法,可以阅读这篇文章了解更多信息:为什么我无法在一个派生类中去访问一个保护成员

2.5K10

C++中派生类成员访问属性

以下是摘自谭浩强《C++面向对象程序设计》一书中内容: 在派生类,对继承方式可以有public(公用)、private (私有的)和protected(保护)3种。...不同继承方式决定了成员派生类访问属性。...简单地说: (1)  公用继承(public inheritance) 公用成员保护成员派生类中保持原有访问属性,其私有成员仍为私有。...(2)  私有继承(private inheritance) 公用成员保护成员派生类成了私有成员。其私有成员仍为私有。...(3)  保护继承(protected inheritance) 公用成员保护成员派生类成了保护成员,其私有成员仍为私有。

1K40

第 15 章 面向对象程序设计

---- 15.5 访问控制与继承 派生类成员和友元只能访问派生类对象部分保护成员,对于普通对象成员不具有特殊访问权限,即在派生类也不能通过对象来访问 protected...假定 D继承自 B: 只有当 D公有地继承 B时,用户代码才能使用派生类类型转换;如果 D继承 B方式是保护或私有的,则用户代码不能使用该转换。...如果 D继承 B方式是公有或保护,则 D派生类成员和友元可使用 D向 B类型转换;反之,如果 D继承 B方式是私有的,则不能使用。 就像友元关系不能传递一样,友元关系同样也不能继承。...友元在访问派生类成员时不具特殊性,类似的,派生类友元也不能随意访问成员。但是友元是可以访问内嵌在派生类对象成员。...只对部分进行初始化,派生类自己数据成员将会默认初始化。

1K30

2W五千字C++基础知识整理汇总

因此成员如果不想被派生类成员函数访问,则应在声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...,但是可以通过调用公有和保护成员访问。...保护继承(protected):当一个派生自保护时,公有和保护成员将成为派生类保护成员。...纯虚函数 大家可能想要在定义虚函数,以便在派生类重新定义该函数更好地适用于对象,但是大家在又不能对虚函数给出有意义实现,这个时候就会用到纯虚函数。

2.6K10

C++继承

,而对于析构调用顺序正好相反,先调用派生类在调用: 对于继承来说有三种:共有继承、私有继承以及保护继承,继承方式不同,派生类对于各种不同属性之间成员访问权限不同,下面再给出一个表格用以说明这个问题...: 通过这个表我们可以总结出一下几点: 1)私有成员在任何情况下都不能被派生类访问; 2)公有继承下其他成员派生类访问属性不变; 3)私有继承下其他成员派生类全部变为私有; 4)保护继承下其他成员派生类全部变为保护属性...保护成员访问情况与私有相同,即保护成员内可以访问外不能访问,它们二者区别在这个表确实没有体现出来,主要区别可以在下一层继承中体现比如有三个继承关系为CC->CB->CA,继承类型分别为...,我们知道非私有成员保护继承下公有的变为保护保护仍然为保护,而私有继承则是将所有都变为私有,他们之间如果都是保护继承方式,那么CA其他成员在CB中都变为保护类型那么在CC仍然能够访问到...CA成员;当他们之间都是以私有继承方式,那么CA成员在CB中都为私有,在CC中就不能访问CA成员,所以在一般情况下,我们将数据成员声明为保护类型,这样既起到了封装作用,又方便派生类访问

58120

【c++】继承学习(一):继承机制与派生类转换

它是继承关系处于较高层次,其特性(属性和方法)可以传递到派生。其他从父继承会自动获得父定义所有公共和保护成员。 子类/ 派生类: 子类是从一个或多个父继承特性。...这里不可见是指私有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管在里面还是外面都不能去访问它 我们前面知道,里面可以访问成员,但是private继承下,子类是无法访问成员...private成员派生类是不能被访问,如果成员不想在外直接被访问,但需要在派生类访问,就定义为protected。...,以及如何在派生类访问被隐藏成员概念。...如果在派生类尝试访问一个被隐藏成员,需要显式地使用名限定符来指定成员。在 Print 方法中使用 Person::_num 来访问 Person _num 成员

29310

C++面试知识总结

多态:通过继承同一个,产生了相关不同派生类,与同名成员函数在不同派生类中会有不同实现,也就是说:一个接口、多种方法。...  3.8 析构函数特点 函数名称固定:~名( ) 没有返回类型,没有参数 不可以重载,一般由系统自动调用 3.8 公有继承、私有继承、保护继承 公有继承时,派生类对象可以访问公有成员...,派生类成员函数可以访问公有和保护成员;公有继承时保护成员,可以通过派生类对象访问但不能修改。...私有继承时,成员只能被直接派生类成员访问,无法再往下继承。 保护继承时,成员也只被直接派生类成员访问,无法再往下继承。...一个引用可以指向它派生类实例。 3.12 static成员变量和static成员函数 static数据成员独立于该类任意对象而存在。

1.7K41

一文让你学完C++,干货收藏!!!

因此成员如果不想被派生类成员函数访问,则应在声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...,但是可以通过调用公有和保护成员访问。...保护继承(protected):当一个派生自保护时,公有和保护成员将成为派生类保护成员。...纯虚函数 大家可能想要在定义虚函数,以便在派生类重新定义该函数更好地适用于对象,但是大家在又不能对虚函数给出有意义实现,这个时候就会用到纯虚函数。

3.3K20

一文让你学完C++,干货收藏!!!

因此成员如果不想被派生类成员函数访问,则应在声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...,但是可以通过调用公有和保护成员访问。...保护继承(protected):当一个派生自保护时,公有和保护成员将成为派生类保护成员。...纯虚函数 大家可能想要在定义虚函数,以便在派生类重新定义该函数更好地适用于对象,但是大家在又不能对虚函数给出有意义实现,这个时候就会用到纯虚函数。

2.9K3029

一文让你学完C++,干货收藏!!!

因此成员如果不想被派生类成员函数访问,则应在声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...,但是可以通过调用公有和保护成员访问。...保护继承(protected):当一个派生自保护时,公有和保护成员将成为派生类保护成员。...纯虚函数 大家可能想要在定义虚函数,以便在派生类重新定义该函数更好地适用于对象,但是大家在又不能对虚函数给出有意义实现,这个时候就会用到纯虚函数。

2.3K20
领券