Library::Library(std::initializer_list<Book> list)
: size{ list.size() }
{
std::size_t i = 0;
for (Book b : list)
{
insertBook(actual, b);
actual = next(actual);
size++;
}
}
错误:
&#39;初始化&#39;:无法转换为&#39; const Book&#39;到&#39;预订&#39;
和
无法复制构建类&#39; Book&#39;由于模糊复制构造函数或没有 可用的复制构造函数
我的book.h构造函数
Book();
Book& operator=(Book& old);
Book& operator=(Book&& old);
Book(std::string& author, std::string& title) :author(author), title(title)
{
std::cout << "l-Referencja" << std::endl;
}
Book(std::string&& author, std::string&& title) :author(author), title(title)
{
std::cout << "r-Referencja" << std::endl;
}
Book(Book& old);
Book(Book&& old);
答案 0 :(得分:0)
std::initializer_list<T>
的迭代器为const T*
,因此基于范围的循环生成的值为const T
,或者在您的情况下为const Book
。
然而,您的类Book
不能可以从常量值构造,因为它的副本及其移动构造函数都需要可变值。
您要么无法使用初始化列表来传达Book
的列表,要么需要重新设计您的类,以便可以从常量值构建它。