简体   繁体   中英

truffle cant find contracts when compiling

Im trying to compile my contracts but solidity cant find a method in a contract that I am importing and using in another contract. I get this error.

/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);

My import looks like this

import "./token.sol";

this is the function that uses the burn method.

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

the contract the above method is in doesnt inherit the Token contract but when I set it to inherit from the Token contract and just do burn(_amount). I get another error. PLease help me understand this.

This is the function inside the Token contract inside 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;
}

Try adding is to derive from your token.sol contract. Derived contracts access all non-private members (state variables and internal functions as well). For more info on inheritance between contracts check out this article.

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;
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM