小编jaz*_*kek的帖子

基础的定义必须先于派生合约的定义

我有两个不同的文件,即 Project1.sol 和 Project2.sol

Project2.sol 就像:

import "./Project1.sol";
        
contract Project2{
    address newProject1Address =address(new Project1());
}
Run Code Online (Sandbox Code Playgroud)

Project1.sol 类似于:

import "./Project2.sol";

contract Project1 is Project2{

}
Run Code Online (Sandbox Code Playgroud)

我已在 Project2.sol 文件中部署了 Project1。而且我一直在使用 Project1.sol 文件中 Project2 中的结构。

我收到一个错误,即“基础的定义必须先于派生合同的定义。 ”对于这一行:contract Project1 is Project2{

网上查了一下错误,有两份合同一份文件的解决方案。但是,我有两个文件。

我将这两个合同合并在一个文件中。

这就是我所做的:

pragma solidity >=0.7.0 <0.9.0;

contract Project2{

        Apple[] public applepies;
        
        struct Apple{
             string name;
             mapping (address => bool) applepie;
        }

        function createProject() external{
            
             address newProject1Address =address(new Project1(msg.sender));

             uint idx = applepies.length;
             applepies.push();
             Apple storage newProject = applepies[idx];
        }

        

    } …
Run Code Online (Sandbox Code Playgroud)

inheritance contract ethereum solidity smartcontracts

6
推荐指数
1
解决办法
4614
查看次数