Solidity
TypeError:變數的數據位置必須是“storage”、“memory”或“calldata”,但沒有給出
我正在嘗試將地址映射到結構對象。初始化結構時出現以下錯誤: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:變數的數據位置必須是“storage”、“memory”或“calldata”,但沒有給出。–> 合約/Transfer.sol:15:7: | 15 | NFT_Owner 所有者 = NFT_Owner({name:_name , nft_id: _nft_id}) ;
有人請幫忙嗎?
NFT_Owner owner = NFT_Owner({name:_name , nft_id: _nft_id}) ;
從 Solidity 0.5.x 開始
結構、數組或映射類型的所有變數的顯式數據位置現在是強制性的。
NFT_Owner memory owner = NFT_Owner({name:_name, nft_id: _nft_id});
您需要添加
memory
關鍵字