You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Remix报错“Invalid implicit conversion from address to address payable”

报错触发原因

该报错是Solidity 0.5.0及以上版本的类型校验规则导致的:

  • 0.5.0版本之后地址类型被拆分为两类:普通address类型(无法直接接收ETH转账)、address payable类型(支持接收ETH转账)
  • 两类地址不支持隐式自动转换,必须显式声明转换逻辑
  • 你使用的Project合约构造函数的第一个入参要求是address payable类型,但msg.sender在外部函数中默认是普通address类型,直接传入就会触发类型不匹配报错
可行解决方法

以下三个方案任选其一即可,优先推荐前两个:

方案1:显式转换msg.sender为payable类型

直接修改传入Project构造函数的参数,给msg.sender做显式类型转换,修改后的代码如下:

Project newProject = new Project(
    payable(msg.sender),
    title,
    description,
    raiseUntil,
    amountToRaise
);

适用场景:需要给Project合约中存储的项目发起者地址转账的场景。

方案2:修改Project构造函数的参数类型

如果你不需要给这个传入的发起者地址转账,可以直接调整Project合约的构造函数定义,将第一个入参的类型从address payable改为普通address:

// 原构造函数示例
constructor(address payable _owner, string calldata _title, ...) {
// 修改后构造函数
constructor(address _owner, string calldata _title, ...) {

适用场景:项目逻辑中不需要给发起者地址直接转账的场景。

方案3:降级Solidity编译器版本

将Remix的编译器版本调整到0.4.25及以下的0.4.x版本,旧版本没有拆分address类型,不会触发该校验。不推荐该方案,0.4.x版本存在多个已知安全漏洞,会增加合约风险。


内容的提问来源于stack exchange,提问作者GGbro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:45:03