Solidity结构体继承报错:ParserError,能否实现结构体间继承?
Solidity结构体继承问题解答
Solidity不支持结构体之间的继承,你遇到的ParserError正是因为这个原因——is关键字仅用于合约、抽象合约或接口的继承,结构体没有继承语法。
如果你需要复用基结构体的字段,有两种常用替代方案:
方案1:嵌套结构体
将基结构体作为派生结构体的一个成员字段,实现字段复用:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Structure { struct BaseStruct { uint256 a; uint256 b; } struct DerivedStruct { BaseStruct base; uint256 c; uint256 d; } }
访问派生结构体中的基字段时,使用类似derivedInstance.base.a的方式。
方案2:复制基结构体字段
直接把基结构体的字段复制到派生结构体中,适合字段数量较少的场景:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Structure { struct BaseStruct { uint256 a; uint256 b; } struct DerivedStruct { uint256 a; uint256 b; uint256 c; uint256 d; } }
内容的提问来源于stack exchange,提问作者parbat Lama
相关产品推荐
相关产品推荐

