松露v5.0.5 (核心: 5.0.5)坚固度v0.5.0 (solc-js) Node v10.15.1
pragma solidity v0.5.0;
contract ApprovalContracts {
address public sender;
address public receiver;
address public approver = 0xc7780C9521C2C2abED69f0D65BEbF9794C55ae94;
function deposit(address _receiver) external payable {
require(msg.value >0);
sender = msg.sender;
receiver = _receiver;
}
function viewApprover() external pure returns(address) {
return(approver);
}
function approve() external {
require(msg.sender == approver);
receiver.payable(address(this).balance);
}
}receiver.payable(address(this).balance);<-新版本中不存在传输
我一直有一个错误,那就是应付点数。
ParserError:预期标识符,但得到“应付” receiver.payable(地址(此).balance);
不知道我做错了什么。
发布于 2019-03-03 06:37:21
我在Remix中对此进行了修改,以确保解决方案能够编译。
当前的问题是Solity0.5.0引入了一种新类型address payable,并从address中删除了传输和发送方法。若要处理payable地址,请将变量转换为address payable。
这里:address payable public receiver;
也在这里:function deposit(address payable _receiver) external payable {
看起来,receiver.payable是一个试图解决错误的猜测。你可能想:
receiver.transfer(address(this).balance);
编译器对语用中的v并不满意。当它编译时,如下所示:
pragma solidity 0.5.0;
contract ApprovalContracts {
address public sender;
address payable public receiver;
address public approver = 0xc7780C9521C2C2abED69f0D65BEbF9794C55ae94;
function deposit(address payable _receiver) external payable {
require(msg.value >0);
sender = msg.sender;
receiver = _receiver;
}
function viewApprover() external view returns(address) {
return approver;
}
function approve() external {
require(msg.sender == approver);
receiver.transfer(address(this).balance);
}
}希望能帮上忙。
https://ethereum.stackexchange.com/questions/67853
复制相似问题