【发布时间】:2022-01-03 15:11:50
【问题描述】:
我最近开始学习 Solidity,我看过两个关于它的讲座视频并阅读了官方文档,但我似乎无法找到解决方案。 [我还检查了几个资源以寻求帮助,但找不到任何帮助]
需要:两个structs,其中一个引用另一个(Reader 结构有一个Book 结构书籍),
当创建reader 时,books 是空的,直到他们拿起(pickUp 函数)一本书。 [可用书籍的列表由我制作]。
我尝试过的:
pragma solidity ^0.6.0
contract School {
struct Book {
string name;
}
Book[2] public books = [Book("we1"), Book("uer")];
struct Reader {
string name;
uint booksRead; //for every added book this increments
Book[] books;
}
Reader public readers;
function _createReader(string memory _name) public returns (uint) {
#some logic
readers.push(Reader("Freddie", 0, books[0]));
uint256 readerID = readers.length - 1;
return readerID;
}
}
错误(无法编译):TypeError: Invalid type for argument in function call. Invalid implicit conversion from struct School.Book storage ref to struct School.Book memory[] memory requested.
我无法理解这个错误。
预期输出:
读者 1(创建时):"Fred", 0, [] //name Fred, booksRead 0, empty list of books
读者 1(更新时):"Fred", 2, [Book("SomeBookI"), ("SomeBookII")]
谢谢。
【问题讨论】:
标签: struct blockchain solidity smartcontracts web3