【发布时间】:2017-03-15 21:52:51
【问题描述】:
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++;
}
}
还有错误:
“正在初始化”:无法从“const Book”转换为“Book”
和:
由于复制构造函数不明确或没有,无法复制构造类“Book” 可用的复制构造函数
我的 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);
【问题讨论】:
-
发布可编译代码。
-
Book& operator=(const Book& old)和Book(const Book& old);。 -
您的标题具有误导性。 初始化器列表中没有循环。 构造函数中有一个循环。初始化列表是:
: size { list.size() } -
你有一个真的奇怪的复制构造函数。
标签: c++ object initializer-list