微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

声明错误:未找到标识符或标识符不唯一映射uint => product公共产品;

如何解决声明错误:未找到标识符或标识符不唯一映射uint => product公共产品;

下面是我的代码,我不知道为什么给我这个错误

// 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);
    }

}

解决方法

Solidity 区分大小写。

您已经定义了一个名为 Product(大写 P)的结构,但您的映射使用的是 product(小写 p)。

解决方案:使用正确的形式Product

mapping(uint => Product) public products;
,

抱歉,我发现问题出在映射中

mapping(uint => product) public products;

我错误地使用了小 p 而不是大写 P。这在迁移我的智能合约时给了我一个错误,因为我的结构名称以大写 P(产品)开头。 所以不是小 p 只是将 p 更改为 P。

mapping(uint => Product) public products;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。