Search code examples
ethereumsolidityopenzeppelin

Can't inherit contract from other one correctly


I have a ERC-721 smart contract defined like this

contract MintNFT is ERC721Enumerable, Ownable {
    constructor(string _name, string _symbol) ERC721(_name, _symbol){}
}

in which I mint the NFTs and few more functions. Then I have created a new contract to purchase the NFTs and manage some stuff, but it forces me to mark it as abstract no matter what I write in the contract. I defined it like this:

contract ManagerNFT is MintNFT, IERC721 {
   constructor(string memory _name, string memory _symbol) MintNFT(_name, _symbol){}
}

It throws an error saying linearization of inheritance graph impossible it goes away when I mark this ManagerNFT contract to abstract. I don't know why this happens, I'm setting the constructors correctly I think, any thoughts on how to do this? Thanks.


Solution

  • As the IERC721 name suggests, it's an interface.

    So the ManagerNFT needs to implement all functions of the interface.