首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:变量的数据位置必须是“存储”、“内存”或“回调数据”,但没有给出

TypeError:变量的数据位置必须是“存储”、“内存”或“回调数据”,但没有给出
EN

Ethereum用户
提问于 2022-03-24 06:54:56
回答 1查看 941关注 0票数 1

我正在试图将一个地址映射到一个struct对象。在初始化结构时,我得到以下错误: TypeError:数据位置必须是变量的“存储”、“内存”或“回调”,但没有给出。

这是我的代码:

代码语言:javascript
复制
//SPDX-License-Identifier: NONE
pragma solidity ^0.8.7;
contract DropSite {
    uint public value = 123;
    
    struct NFT_Owner{
      string  name;
      uint nft_id;
    }
    mapping(address => NFT_Owner) public NFT_Ownership;
    address[] public NFT_Owners;

    function addValues( string memory _name, uint _nft_id) public {

      NFT_Owner owner = NFT_Owner({name:_name , nft_id: _nft_id}) ;
      
      NFT_Ownership[msg.sender] = owner;
      NFT_Owners.push(0xdD870fA1b7C4700F2BD7f44238821C26f7392148);
    }
     
  }

错误是: TypeError:数据位置必须是变量的“存储”、“内存”或“调用数据”,但是没有给出。-> contracts/Transfer.sol: 15 :7: 15 NFT_Owner owner = NFT_Owner({name:_name,nft_id:_nft_id});

有人能帮忙吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-03-24 07:03:04

代码语言:javascript
复制
  NFT_Owner owner = NFT_Owner({name:_name , nft_id: _nft_id}) ;

既然坚固度为0.5.x

结构、数组或映射类型的所有变量的显式数据位置现在都是必需的。

代码语言:javascript
复制
NFT_Owner memory owner = NFT_Owner({name:_name, nft_id: _nft_id});

您需要添加memory关键字

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/124558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档