我正在试图将一个地址映射到一个struct对象。在初始化结构时,我得到以下错误: TypeError:数据位置必须是变量的“存储”、“内存”或“回调”,但没有给出。
这是我的代码:
//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});
有人能帮忙吗?
发布于 2022-03-24 07:03:04
NFT_Owner owner = NFT_Owner({name:_name , nft_id: _nft_id}) ;既然坚固度为0.5.x
结构、数组或映射类型的所有变量的显式数据位置现在都是必需的。
NFT_Owner memory owner = NFT_Owner({name:_name, nft_id: _nft_id});您需要添加memory关键字
https://ethereum.stackexchange.com/questions/124558
复制相似问题