0

私は堅牢性とブロックチェーンの概念全体に不慣れで、ユーザーがいくつかの製品を選択してバスケットに入れて注文できる単純な電子商取引 Web サイトを作成しようとしています。

問題は、これを機能させる方法がわからないことです。製品の配列を含む模擬注文で注文契約を初期化しようとしていますが、次のような TypeErrors が発生します。

「TypeError: メンバー "createProduct" が見つからないか、タイプ (契約製品) の引数依存のルックアップ後に表示されません。」

ここに私のProducts.solがあります

pragma solidity ^0.5.0;

contract Products {
    uint256 public productsCount = 0;

    struct Product {
        uint256 id;
        string name;
        string category;
        int256 price;
    }

    mapping(uint256 => Product) public products;

    event ProductCreated(
        uint256 id,
        string name,
        string category,
        int256 price
    );

    event ProductEdited(uint256 id, string name, string category, int256 price);

    event ProductDeleted(
        uint256 id,
        string name,
        string category,
        int256 price
    );

    constructor() public {
        createProduct("Test", "Test", 53);
    }

    function createProduct(
        string memory _name,
        string memory _category,
        int256 _price
    ) public {
        productsCount++;
        products[productsCount] = Product(
            productsCount,
            _name,
            _category,
            _price
        );

        emit ProductCreated(productsCount, _name, _category, _price);
    }

    function editProduct(
        uint256 _id,
        string memory _name,
        string memory _category,
        int256 _price
    ) public {
        Product memory _product = products[_id];
        _product.name = _name;
        _product.category = _category;
        _product.price = _price;
        products[_id] = _product;

        emit ProductEdited(_id, _name, _category, _price);
    }

    function deleteProduct(uint256 _id) public {
        Product memory _product = products[_id];

        delete products[_id];

        productsCount--;

        emit ProductDeleted(
            _id,
            _product.name,
            _product.category,
            _product.price
        );
    }
}

そして、ここに私の Orders.sol があります

pragma solidity ^0.5.0;
import "./Products.sol";

contract Orders {
    uint256 public ordersCount = 0;

    struct Order {
        uint256 id;
        int256 totalPrice;
        string date;
        Products[] products;
    }

    mapping(uint256 => Order) public orders;

    constructor() public {
        createOrder(
            150,
            "01.01.2021",
            [Products.createProduct("name", "category", 1)]
        );
    }

    function createOrder(
        int256 _totalPrice,
        string memory _date,
        Products[] memory _products
    ) public {
        ordersCount++;
        orders[ordersCount] = Order(ordersCount, _totalPrice, _date, _products);
    }
}

おそらくそれは簡単な質問ですが、私は以前にソリッド性を使用したことがなく、YouTube のすべてのチュートリアルは単純すぎて、この種のネストされたデータについて説明していません。

ここで助けていただければ幸いです:D

4

2 に答える 2