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

Solidity报错:uint256未找到push成员,求问题原因与解决方法

问题分析与解决方法

问题原因

错误提示「Member "push" not found or not visible after argument-dependent lookup in uint256」的核心原因是:你定义的Campaign结构体中,donations字段是单个uint256数值类型,而非动态数组类型。push()是Solidity数组专属的成员方法,单个数值类型没有这个方法,因此调用campaign.donations.push(amount)会报错。

解决方法

  1. 修正Campaign结构体的定义,将donations的类型改为uint256[](动态无符号整数数组),示例如下:
    struct Campaign {
        address owner;
        uint256 amountCollected;
        address[] donators;
        uint256[] donations; // 改为数组类型,和donators字段对应
        // 其他自定义字段...
    }
    
  2. 确认存储Campaign的映射campaigns类型为mapping(uint256 => Campaign),确保通过campaigns[_id]获取的campaign实例中,donations是数组类型,这样就能正常调用push()方法添加捐赠金额。

修改完成后,原donateToCampaign函数的逻辑无需调整,即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:31:07