在initializer_list范围内进行循环
Loop for in range of initializer_list
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"转换为"书"
和:
由于模棱两可的复制构造函数或没有 可用复制构造函数
我的书。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);
std::initializer_list<T>
的迭代器是const T*
,因此基于范围的环路会产生const T
的值,或者在您的情况下,const Book
。
您的类Book
是不是从常数值构造的,因为其副本和移动构造函数都需要可变的值。
您要么不能使用初始化列表来传达Book
s的列表,要么需要重新设计类,以便可以从恒定值构造。
相关文章:
- 并行用于C++17中数组索引范围内的循环
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 同一范围内矢量的两个独立"for"循环,仅打印第一个循环
- 在基于范围的循环范围内的双/整数使用和数据缩小
- 在initializer_list范围内进行循环
- 自动和范围内 for 循环 C++11 不起作用
- 基于指针容器循环的范围内的值语义
- 以下是基于循环的范围内的幕后列表
- 基于循环的C 范围内的Ampers和
- 循环范围内的初始值设定项列表
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 我们可以擦除c++11中基于循环的范围内的项目吗
- 使用对指针的引用作为循环C++11范围内的序列
- 给定范围内的完美平方:循环执行异常
- 从矢量中删除项目,而在 C++11 范围内'for'循环?
- 通过引用传递向量,并在基于for循环的范围内更改其值
- 如何在'while(getline(...))'循环中让'string line'与'getline(in,line)'处于同一范围内?
- 循环计数某个范围内的事件编号时总是返回1
- 使用 while 循环打印两个用户输入值范围内的数字