我正在尝试创建一个函数,该函数可以为结构设置地址,这样我就可以输入该地址并将结构数据返回给我。即0x876…返回名称";John";,余额";99〃;
我在'getInfoByWallet[_wall]=teamWallets;'上收到错误消息上面写着
"从坚固性:mapping.sol22:34:TypeError:类型类型(struct-mapping.teamWallets存储指针(不能隐式转换为预期类型struct-Mapling.teamAwallets存储引用。getInfoByWallet[_wall]=团队钱包">
我很困惑,真的不知道该怎么办。任何帮助都将不胜感激。
pragma solidity ^0.5.11;
pragma experimental ABIEncoderV2;
contract Mapping {
struct teamWallets {
string name;
uint256 balance;
}
string name = "";
uint256 balance = 0;
teamWallets[] public _teamWallets;
mapping(address => teamWallets) public getInfoByWallet;
function addteamData(string memory _name, uint256 _balance) public {
_teamWallets.push(teamWallets(_name, _balance));
}
function setInfo(address _wall, teamWallets memory) public {
getInfoByWallet[_wall] = teamWallets;
}
}
如果你想在solidity中使用带有映射的struct,那么你必须遵循我在下面提到的方法。
这里是你的团队钱包结构。那么您已经在映射getInfoByWallet中使用了它。
现在,当你必须在像这样的映射中设置数据时
struct teamWallets {
string name;
uint256 balance;
}
mapping(address => teamWallets) public getInfoByWallet;
function setInfo(address _wall, string memory _name, uint256 _balance) public {
getInfoByWallet[_wall].name=_name;
getInfoByWallet[_wall].balance=_balance;
}
因此,这是将数据存储在具有solidity映射的结构中的正确方法。我希望,现在你能澄清这个错误。