“菱形继承”在gcc下无法从派生类cast到基类的问题。
下面的代码error处编译不过,想请问怎么能绕过这个检查,使得可以直接从Foo指针转换为A指针?
class A
{};
class B : public A
{};
class C : public A
{};
class Foo
: public A
, public B
, public C
{};
int main()
{
Foo* f = new Foo();
B *ptrb = (B*)(Foo*)f;
C *ptrc = (C*)(Foo*)f;
A *ptr = (A*)(Foo*)f; // error
cout << "Hello world!" << endl;
return 0;
}
VC下正常通过,不会导致编译错误。
传统的菱形继承导致的问题是这样的,这个我会绕,也很能理解,确实从Foo到A,不知道到底是B的A还是C的A。
class A
{};
class B : public A
{};
class C : public A
{};
class Foo
: public B
, public C
{};
int main()
{
Foo* f = new Foo();
A *ptr = (A*)(B*)(Foo*)f;
cout << "Hello world!" << endl;
return 0;
}
不过在最上面的例子中,我已经是写明了Foo是更优先从A派生的,这时如果我需要A的指针,是希望编译器能够放我一马的。
请不要问为什么不用virtual继承什么的,那样跑题了,我现在是要在gcc下编译某个第三方库,没法修改第三方库的头文件,而且这里必须要获取到A在Foo中的偏移……所以,总之,请不要问我为什么要这么做,我只想知道gcc这里能不能用什么办法给绕过去……
多谢!!
相关推荐
f f的我覆盖规划肉体和换行托付给用户
拷贝构造函数、移动构造函数、赋值运算符重载的六大默认成员函数行为及其显式定义准则;虚函数表(vtable)与虚函数指针(vptr)的底层实现机制;纯虚函数与抽象基类在接口契约定义中的不可替代作用;多重继承下的菱形继承问题与虚继承解决方案
前端开发组件示例源码_f1b6a91d详解
前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-5Z6jeSqI1792158476
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;5Z6jeSqI1792158476 sdhmgggw168.com www.shangliangwangye.com www.sdbing.net migu.blsxex.abxlbz.sc.cn www.safespeed.net.cn
高校如何通过科技报告服务提升技术转移转化效率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。


