трюфель не может найти контракты при составлении - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь скомпилировать свои контракты, но Solidity не может найти метод в контракте, который я импортирую и использую в другом контракте. Я получаю эту ошибку.

/home/a/Documents/so/contracts/incidents.sol:188:9: TypeError: Member "burn" not found or not visible after argument-dependent lookup in type(contract Token)
        Token.burn(_amount);

Мой импорт выглядит так

import "./token.sol";

это функция, которая использует метод записи.

function buyRep(uint _amount) {
    uint repAmount = _amount.mul(3);
    profiles[msg.sender].uRep.repToGive.add(repAmount);
    Token.burn(_amount);
}

контракт Вышеупомянутый метод не наследует контракт Token, но когда я устанавливаю его для наследования от контракта Token и просто сжигаю (_amount). Я получаю еще одну ошибку. Пожалуйста, помогите мне понять это.

Это функция внутри контракта Token внутри token.sol.

function burn(uint256 _value) public returns (bool success) {
    require(balances[msg.sender] >= _value);   // Check if the sender has enough
    balances[msg.sender] -= _value;            // Subtract from the sender
    _totalSupply -= _value;                      // Updates totalSupply
    //emit Burn(msg.sender, _value);
    return true;
}

1 Ответ

0 голосов
/ 22 июня 2020

Попробуйте добавить is для получения из вашего контракта token.sol. Производные контракты обращаются ко всем не закрытым членам (а также к переменным состояния и внутренним функциям). Дополнительные сведения о наследовании между контрактами см. В этой статье.

import "./ContractB.sol";

contract ContractA is ContractB {

    function buyRep(uint _amount) public {
      burn(_amount);
    }
}

'

contract ContractB {

    function burn(uint256 _value) public returns (bool success) {
       require(balances[msg.sender] >= _value);   // Check if the sender has enough
       balances[msg.sender] -= _value;            // Subtract from the sender
       _totalSupply -= _value;                      // Updates totalSupply
       //emit Burn(msg.sender, _value);
       return true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...