Dieser Vertrag implementiert nicht alle Funktionen und kann daher nicht erstellt werden? Ich bin sehr neu in Solidty. Jede Hilfe wird sehr geschätzt

pragma solidity ^0.4.0;
contract contracta{
    uint mapsize=10;
    struct request_task{ 
    uint task_id; 
    string ip_address;
    uint flag ;// submited, 1, excuteding, 2, finished, 3, failed
    uint task_submit_time; // 08:12:01 06/18/2018
    uint task_deadline; //  09:12:01 06/18/2018
    uint  provided_price; // maximum price: $10 per hour
    uint bandwidth; // minimum: 100.00 KBP
    }
    request_task[] private request;
    uint internal countera;
    function contracta() internal{
        add(1,"172.168.3.3",1,10,30,5,200);
        add(1,"172.168.3.3",1,10,30,5,200);

    }
    function add(uint _task_id,string _ip_address,uint _flag,uint _task_submit_time,uint _task_deadline,uint  _provided_price,uint _bandwidth) internal{
        request.push(request_task(_task_id,_ip_address,_flag, _task_submit_time,_task_deadline,_provided_price,_bandwidth));
    }
    function get()constant returns(uint){
        return request[1].task_submit_time;
    }

}

Antworten (1)

Sie können keinen Vertrag mit einem internalKonstruktor bereitstellen. Verwenden Sie publicstattdessen:

function contracta() public {
    add(1,"172.168.3.3",1,10,30,5,200);
    add(1,"172.168.3.3",1,10,30,5,200);
}

Übrigens verwenden Sie eine extrem alte Version des Solidity-Compilers. Die aktuelle Version ist 0.4.23. Heutzutage gibt es eine verbesserte Konstruktorsyntax:

constructor() public {
    ...
}
Ein Konstruktor kann sein internal, Sie können den Vertrag nur nicht bereitstellen (oder erstellen). Der Sinn eines Konstruktors besteht internaldarin, dass Sie ausdrücklich angeben möchten, dass Sie den Vertrag nicht bereitstellen (oder erstellen) möchten, aber dennoch von ihm erben möchten (dh ihn zu einem bereitstellbaren Vertrag erweitern).