GGb*_*bro 3 javascript blockchain solidity web3js remix
我在重新混合时遇到此错误:
函数调用中参数的类型无效。从地址到请求的应付地址的隐式转换无效
它指的是msg.sender下面的第 9 行。这是我正在编写的代码:
function startProject(
string calldata title,
string calldata description,
uint durationInDays,
uint amountToRaise
) external {
uint raiseUntil = block.timestamp.add(durationInDays.mul(1 days));
Project newProject = new Project(
msg.sender,
title,
description,
raiseUntil,
amountToRaise
);
projects.push(newProject);
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?我该如何解决?
链接的代码包含contract Project及其 的定义 constructor :
constructor
(
address payable projectStarter,
string memory projectTitle,
string memory projectDesc,
uint fundRaisingDeadline,
uint goalAmount
) public {
// ...
}
Run Code Online (Sandbox Code Playgroud)
它接受address payable作为第一个参数。但是,默认情况下msg.sender并非如此payable(自 Solidity 0.8.0 起)。
解决方案:将其类型转换address为address payable:
Project newProject = new Project(
// `msg.sender` is of type `address` - typecasting to `address payable`
payable(msg.sender),
title,
description,
raiseUntil,
amountToRaise
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8893 次 |
| 最近记录: |