我有以下函数
enum OptionType {Invalid, Put, Call}
function create(
uint256 period,
uint256 amount,
uint256 strike,
OptionType optionType
) {
....
}
当我试图使用这个从另一个合同调用这个函数时
address(contractAddress).delegatecall(abi.encodeWithSignature("create(uint256,uint256,uint256,uint8)",1,1,1,1));
我得到错误
无法识别功能选择器,并且没有回退功能
确保您的contractAddress
是有效的,并且您使用了正确版本的solidity
当外部调用带有枚举的函数时,这似乎可以正常工作
pragma solidity ^0.8.0;
contract Test {
enum OptionType {Invalid, Put, Call}
function create(
uint256 period,
uint256 amount,
uint256 strike,
OptionType optionType
) public returns(bool) {
return true;
}
function delegatCallTest() public view returns(bytes memory) {
(bool success, bytes memory data) = address(this).staticcall(abi.encodeWithSignature("create(uint256,uint256,uint256,uint8)",1,1,1,1));
require(success);
return data;
}
}