solidity Error:linearization of inherintance graph impossable

在下面的代码中,Solidity会报错:“Linearization of inheritance graph impossible”。

// 以下代码无法编译

pragma solidity >=0.4.0 <0.7.0;

contract X {}
contract A is X {}
contract C is A, X {}

原因是C要求X来重写A(定义AX这个顺序),但A本身的要求重写X,这是一个矛盾,不能解决。

多继承和线性化(Multiple Inheritance and Linearization)。Solidity是沿用Python的方式, 使用C3线性化,在基类的DAG强制使用特定的顺序。这导致单调但不允许某些继承关系。特别是,is指令中给出父类的顺序很重要

一个简单的规则是要指定父类中的顺序从左到右为“most base-like”到“most derived”。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值