UnimplementedFeatureError: Codierungstyp "struct BiddingContract.Bidder memory" noch nicht implementiert

Der Code ist mit dem neuen Upgrade v0.5 unter Verwendung von Truffle v5.0.1 (Kern: 5.0.1) gebrochen

struct Bidder {
    address bidders_address;
    uint productId;
    uint bidValue;
}

struct Product {
    uint productId;
    uint bidStartPrice;
    uint32 bidStartTime;
    Bidder latestBid;
    string productName;
    bool isAvailable;
    uint32 bidSession;

}

Und Zuordnung als

mapping(uint => Product) product;

entfernt die öffentliche Getter-Ehrwürdigkeit, aber der Fehler kommt immer noch.

Dies ist mein vollständiger Code:

    pragma solidity >=0.4.21 <0.6.0;

    import "./AucSters.sol";
    import "../libraries/SafeMath.sol";

    contract BiddingContract {

    using SafeMath for uint; 

    address admin;
    AucSters public tokenContract;
    uint256 public tokenPrice;
    uint256 public tokensSold;

    //structs
    struct Seller {
        uint256 sellerId;
        string sellerName;
        bool isValidSeller;
    }
    struct Bidder {
        address bidders_address;
        uint productId;
        uint bidValue;
    }
    struct Product {
        uint productId;
        uint bidStartPrice;
        uint32 bidStartTime;
        Bidder latestBid;
        string productName;
        bool isAvailable;
        uint32 bidSession;

    }

    mapping(address => Seller) registeredSeller;
    mapping(uint => address) public productIdToOwner;
    mapping(address => uint) public productCount;
    mapping(uint => Product) product;
    mapping(address => mapping(uint => uint)) public latestBidStore;

    //ARRAYS
    address[] public regSellers;
    Product[] public productsForSale;
    address[] public bidders;


    constructor(AucSters _tokenContract, uint _tokenPrice) public {
        //Assign an admin
        admin = msg.sender;

        // token Contract 
        tokenContract = _tokenContract;

        //Token price
        tokenPrice = _tokenPrice;
   }


}
Der Code, den Sie bisher geteilt haben, kompiliert gut für mich. Könnten Sie den Code teilen, der den Fehler enthält?
ja klar, fertig
Ich habe publicaus der Erklärung von entfernt product, ich habe alle Zeilen gelöscht, die auf den AucStersVertrag verweisen (für den Sie keine Definition angegeben haben). Ich habe die sicheren mathematischen Referenzen in normale mathematische Operationen umgewandelt. Danach wurde der Code gut kompiliert.
Wenn Sie weitere Hilfe benötigen, stellen Sie bitte einen eigenständigen Codeabschnitt bereit (etwas, das einfach kopiert/eingefügt werden kann, ohne Verweise auf Dateien, die Sie nicht bereitgestellt haben), der das Problem aufweist. Löschen Sie vorzugsweise den gesamten Code, der nicht erforderlich ist, um den Fehler zu reproduzieren.
aktualisierte den fraglichen Code keine Funktionen, funktioniert immer noch nicht für mich
Der Code in der Frage bezieht sich immer noch auf AucSters und SafeMath, ohne Code für beide bereitzustellen. Es wäre auch hilfreich zu wissen, welche Solidity-Version Sie verwenden. Ihr Pragma lässt viele verschiedene Versionen zu.
Außerdem, welche Codezeile gibt Ihnen diesen Fehler?
@smarx, ich habe es zum Laufen gebracht, es war die Reihe von Produkten, die das Chaos da draußen anrichteten. danke für die Hilfe

Antworten (1)

Ich habe das Problem gelöst!

Das Array deklariert productsForSale gibt auch standardmäßig einen Getter an, da es öffentlich ist, entfernen Sie es publicund es wird funktionieren

Product[] public productsForSale;

ersetzen Sie es durch

 Product[] productsForSale;
Falls es hilft, liegt das daran, dass es ein struct( Bidder) enthält und der mit angeforderte "kostenlose" Getter publicdies nicht unterstützt.