c – 摆脱错误C2243
发布时间:2020-12-16 02:59:26 所属栏目:百科 来源:网络整理
导读:是否可以摆脱 error C2243? class B {};class D : protected B {};D d;B *p = d; // conversion from 'D *' to 'B ' exists,but is inaccessible 我的应用程序出现这个错误,最后我通过明确的转换来设法编译它: D d;B *p = (B*)d; 我不明白为什么通过使类D
是否可以摆脱
error C2243?
class B {}; class D : protected B {}; D d; B *p = &d; // conversion from 'D *' to 'B &' exists,but is inaccessible 我的应用程序出现这个错误,最后我通过明确的转换来设法编译它: D d; B *p = (B*)&d; 我不明白为什么通过使类D继承保护从B使隐式转换不可访问. 我尝试通过在D类中创建一个运算符B()来避免显式转换,以使转换可访问: class B {}; class D : protected B { public: operator B() {return *this;} }; 但是没有办法. 任何其他解决方案,以避免显式转换? 解决方法
如果你想允许转换,你应该使用公共继承.
使用受保护或私有继承,您声明派生类型从基类继承的事实是不能从外部显示的细节:这就是为什么您会收到该错误. 您应该将非公共继承视为一种组合形式,并增加覆盖方法的可能性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Quick-x cocos2dx下的彩色文本显示--RichLabel
- ruby-on-rails – Ruby 2.2:PG :: CharacterNotInRepertoi
- ios – 如何在xcode 4.5中的初始视图的tabbar控制器中重新排
- Ruby 1.9正则表达式与上下文无关语法同样强大吗?
- c – 每个和自由函数的Boost mpl
- sqlite表结构动态读取工具(Chole ORM框架)
- ruby-on-rails – 如何解析不同语言环境格式的数字?
- QT SQLite 多数据库操作大全
- VB6.0在编译declare语句时报错,无法通过
- ruby-on-rails – time_ago_in_words =>“in {{count}} day