找出 solidity 接口问题

Figuring out a solidity Interface issue

我得到了一个 solidity 接口的例子。

1/ 如果此方法准确无误,请提供任何线索,因为它是在继承自合同而不是扩展合同中实现接口。

2/ 我尝试实现它,contractA 函数 运行 正确,但是 contractB getCount 函数不正确 运行ning。

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface InterfaceA {
function count() external view returns (uint256);
function increment() external;
}

contract contractA {

uint256 number = 0;

function count() external view returns (uint256) {
    return number;
}

function increment() external {
    number++ ;
}
}

// SPDX-License-Identifier: MIT

import './contractA.sol' ;

pragma solidity ^0.8.0;

contract contractB {

address addressA;

function setPointer(address _addressA) external {
    addressA = _addressA;
}

function getCount() external view returns (uint256) {
    InterfaceA b = InterfaceA(addressA);
    b.count();
}

function addToIncrement() external {
    InterfaceA b = InterfaceA(addressA);
    b.increment();
}
}

我认为唯一的问题是您没有return从 getCount 获取任何信息。你添加了return签名,你编译的时候应该会有一个警告。

function getCount() external view returns (uint256) {
    InterfaceA b = InterfaceA(addressA);
    return b.count();
}