#ethereum #solidity #smartcontracts
Вопрос:
ниже приведен мой код, я не уверен, зачем выдавать мне эту ошибку.
// SPDX-License-Identifier: MIT
pragma solidity ^0.5.16;
// creating the contract
contract Rating {
// creating structure to model the product
struct Product {
uint id;
string name;
uint RatingCount;
}
// use mapping to get or fetch the contestant details
mapping(uint => product) public products;
// add a public state variable to keep track of product count
uint public productsCount;
constructor () public {
addProduct("Nike");
addProduct("Adidas");
}
// add a function to add product
// for private variable we use underscore in the start of variable _name
function addProduct(string memory _name) private {
productsCount ;
products[productsCount] = Product(productsCount, _name, 0);
}
}
Ответ №1:
Солидность чувствительна к регистру.
Вы определили структуру с именем Product
(в верхнем регистре P), но в вашем отображении используется product
(в нижнем регистре p).
Решение: Используйте правильную форму Product
mapping(uint => Product) public products;
Ответ №2:
извините, я нашел ответ, проблема в отображении
mapping(uint => product) public products;
Я ошибочно использую small p вместо capital P. Это приводит к ошибке при переносе моего смарт-контракта, потому что имя моей структуры начинается с Capital P (Продукт).
поэтому вместо маленького p просто измените p на P.
mapping(uint => Product) public products;