警告:不推荐使用从地址类型继承的合约成员“余额”。坚固性

     2023-02-18     301

关键词:

【中文标题】警告:不推荐使用从地址类型继承的合约成员“余额”。坚固性【英文标题】:Warning: Using contract member "balance" inherited from the address type is deprecated. Solidity 【发布时间】:2018-12-24 14:57:49 【问题描述】:

警告:不推荐使用从地址类型继承的合约成员“余额”。将合约转换为“address”类型以访问成员,例如使用“address(contract).balance”代替。

我在使用 Remix 编辑器的 Solidity 中收到此警告。

这是代码块:

function getSummary() public view returns(
    uint, uint, uint, uint, address
)
    return (
        minimumContribution,
        this.balance, // This is the warning line.
        requests.length,
        approversCount,
        manager
    );

我尝试按照警告的建议进行操作:

function getSummary() public view returns(
    uint, uint, uint, uint, address
)
    return (
        minimumContribution,
        address(contract).balance,
        requests.length,
        approversCount,
        manager
    );

但这不起作用。

【问题讨论】:

【参考方案1】:

或者,您可以将this 分配给address 类型的局部变量...

address contractAddress = this;

function getSummary() public view returns(
    uint, uint, uint, uint, address
)
  return (
    minimumContribution,
    contractAddress.balance,
    requests.length,
    approversCount,
    manager
  );

【讨论】:

【参考方案2】:

balanceaddress 类型的属性,而不是来自合同。将其更改为address(this).balance

function getSummary() public view returns(
    uint, uint, uint, uint, address
)
    return (
        minimumContribution,
        address(this).balance,
        requests.length,
        approversCount,
        manager
    );

【讨论】:

这就是我想要的。谢谢。

solidity极简入门#22.call

...应call是否成功以及目标函数的返回值。call是solidity官方推荐的通过触发fallback或receive函数发送ETH的方法。不推荐用call来调用另一个合约,因为当你调用不安全合约的函数时,你就把主动权交给了它。推荐的方法仍是声明合约变... 查看详情

C++ 警告:不推荐使用从字符串常量到“char*”的转换 [-Wwrite-strings]

】C++警告:不推荐使用从字符串常量到“char*”的转换[-Wwrite-strings]【英文标题】:C++warning:deprecatedconversionfromstringconstantto‘char*’[-Wwrite-strings]【发布时间】:2014-02-0313:53:15【问题描述】:我正在使用gnuplot在C++中绘制图形。该图... 查看详情

Web3:从地址中检索 ERC20 代币的余额

...无效,是否已耗尽Gas?如果您没有为从中检索数据的合约使用正确的ABI、从不存在的块号请求数据或查询未完全同步的节点,您也可能会看到此错误。阿比:https://github.com/creed-vi 查看详情

C#中的新修饰符

...类版本。虽然你可以隐藏成员而不使用new修饰符,结果是警告。如果您使用new显式隐藏成员,它会抑制此警告并证明派生的事实版本旨在作为替代品。例子:classBaseintvalue;virtualboolFoo 查看详情

Angular Cli 警告:不推荐使用选项“entryComponent”:从带有 Ivy 的 9.0.0 版开始,不再需要 entryComponents

】AngularCli警告:不推荐使用选项“entryComponent”:从带有Ivy的9.0.0版开始,不再需要entryComponents【英文标题】:AngularCliWarning:Option"entryComponent"isdeprecated:Sinceversion9.0.0withIvy,entryComponentsisnolongernecessary【发布时间】:2021-02-251 查看详情

区块链开发之solidity编程基础合约继承抽象合约接口(代码片段)

...t_x; //Base基类构造函数携带参数 functionBase(uintx) _x=x; //使用is从另一个合约派生。派生合约可以访问所有非私有成员,包括内部函数和状态变量,//但无法通过this来外部访问。contractDerivedisBase(7) functionDerived(uinty)Base(y*y) ... 查看详情

如何将 ERC20 代币发送到智能合约余额?

...4-2623:45:16【问题描述】:我正在尝试构建一个智能合约并继承一些函数来交换ERC20代币,这是我的问题?问题A:可以将ERC20代币转入智能合约余额吗?,请举个例子,即我们可以创建一个函数将ETH发送到智能合约functioncontribute()exte... 查看详情

web3.js链接以太坊并查询钱包u余额(代码片段)

...询的网址,查找该账户的交易信息,并找到合约地址给你们推荐一个:https://www.yitaifang.com/accounts/.直接右上角查询账户地址,找到里面随意一个USDT的交易并复制下来该合约地址通过合约地址查询该ABI查询合约地 查看详情

从 ERC271 合约继承有啥意义?

...【发布时间】:2021-11-1314:18:42【问题描述】:我刚刚开始使用Solidity。对于这个问题,我认为如果我首先陈述我对继承的理解会很有用:如果合同B继承自合同A(即在contractB.sol中我们有contractBisA...那么合约B将可以访问合 查看详情

c++中子类从基类都继承啥?

...变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。③在子类中允许有一个方法和父类的方法名字相同而类型不同。参... 查看详情

虚拟继承解决二义性及数据冗余的原理

...最后一次继承的派生类(D类)的末尾。如图所示,在不使用虚拟继承的前提下,各个类定义定义变量后我们可以看看他们各自所处的地址如下:可以看出,A,B类继承的m_n处于不同的地址,是两个成员。而使用虚拟继承后他们所... 查看详情

solidity地址支付方法sendtransfer和call的使用(代码片段)

以上三种转账方式都属于地址的成员属性(membersof address)。参见地址成员类型Transfer如果当前合约的余额不够大或者Ether转账被接收账户拒绝,转账功能将失败。接收方智能合约应定义回退函数,否则转账调用将... 查看详情

在php中停止不推荐使用的警告[重复]

】在php中停止不推荐使用的警告[重复]【英文标题】:StopDeprecatedwarninginphp[duplicate]【发布时间】:2016-05-2413:19:37【问题描述】:我对不推荐使用的警告有一些问题。我正在制作一个php网络应用程序。我在我的办公室使用核心php,... 查看详情

通过遗传继承的静态成员可访问性

...:我最近提出了一些相当时髦的单例工作,并发现我可以使用使用泛型的相同继承基础从任何唯一继承类型访问受保护的静态成员。我所说的一个例子如下:publicabstractclassClass<T>protectedstati 查看详情

抑制 Java 中不推荐使用的导入警告

】抑制Java中不推荐使用的导入警告【英文标题】:SuppressdeprecatedimportwarninginJava【发布时间】:2010-12-2321:38:35【问题描述】:在Java中,如果您导入了已弃用的类:importSomeDeprecatedClass;您收到此警告:ThetypeSomeDeprecatedClassisdeprecated... 查看详情

误导性的“不推荐使用没有回调的异步函数”警告

】误导性的“不推荐使用没有回调的异步函数”警告【英文标题】:misleading“Callinganasynchronousfunctionwithoutcallbackisdeprecated”warning【发布时间】:2018-03-2721:22:42【问题描述】:NodeJS给了我一个警告(node:32600)[DEP0013]DeprecationWarning:调... 查看详情

警告:不推荐使用“字符”:请直接使用字符串或子字符串

】警告:不推荐使用“字符”:请直接使用字符串或子字符串【英文标题】:warning:\'characters\'isdeprecated:PleaseuseStringorSubstringdirectly【发布时间】:2018-03-1002:05:56【问题描述】:characters-String的实例属性,已弃用Xcode9.1使用characters... 查看详情

constexpr 和不推荐使用的转换警告

】constexpr和不推荐使用的转换警告【英文标题】:constexpranddeprecatedconversionwarning【发布时间】:2011-03-1305:04:43【问题描述】:我正在编写一个函数作为Boost.Interprocess实验的一部分。在函数中,我将字符串文字分配给声明为constexpr... 查看详情