C++ 填充动态创建的数组时出现问题

C++ 填充动态创建的数组时出现问题,c++,oop,class,C++,Oop,Class,在下面的代码中,我尝试使用for循环初始化类book的五个对象的成员Name,使用从字符串数组数组中提取的名称(本例中的数字用于测试) #包括 #包括 使用名称空间std; 课堂用书 { 私人: 字符串名; 公众: 书(); 书(弦&); }; 书 {} 书本::书本(字符串和临时) { 名称=温度; } int main() { 字符串数组[]={“1”、“2”、“3”、“4”、“5”}; book*BookList=新书[5]; 对于(int count=0;count

在下面的代码中,我尝试使用
for
循环初始化类
book
的五个对象的成员
Name
,使用从字符串数组
数组
中提取的名称(本例中的数字用于测试)

#包括
#包括
使用名称空间std;
课堂用书
{
私人:
字符串名;
公众:
书();
书(弦&);
};
书
{}
书本::书本(字符串和临时)
{
名称=温度;
}
int main()
{
字符串数组[]={“1”、“2”、“3”、“4”、“5”};
book*BookList=新书[5];
对于(int count=0;count<5;count++)
{
BookList[count]=新书(数组[count]);
}
返回0;
}
但是,每当我尝试编译代码时,都会出现以下错误:

main.cpp: In function ‘int main()’:
main.cpp:28: error: no match for ‘operator=’ in ‘*(BookList + ((unsigned int)(((unsigned int)count) * 4u))) = (operator new(4u), (<statement>, ((book*)<anonymous>)))’
main.cpp:6: note: candidates are: book& book::operator=(const book&)
main.cpp:在函数“int main()”中:
main.cpp:28:错误:在“*(BookList+((unsigned int)((unsigned int)count)*4u))=(operator new(4u),(,((book*))中的“operator=”不匹配

BookList
是由五个
book
对象组成的数组

BookList[count] = new book(Array[count]); 
您试图使用
BookList
,就好像它是指向
book
对象的五个指针数组一样

BookList[count]
不是指向
count
th
book
的指针,而是
count
th
book

您是否考虑过使用标准库容器,如
std::vector

std::vector<book> BookList(5);
std::向量图书列表(5);
或者,如果您不想在知道它们是什么之前插入
book
s,您可以使用
0
(通过移除
(5)
初始值设定项)和
按需向后推
插入
图书来创建它

BookList[count] = new book(Array[count]);
BookList
是由五个
book
对象组成的数组

BookList[count] = new book(Array[count]); 
您试图使用
BookList
,就好像它是指向
book
对象的五个指针数组一样

BookList[count]
不是指向
count
th
book
的指针,而是
count
th
book

您是否考虑过使用标准库容器,如
std::vector

std::vector<book> BookList(5);
std::向量图书列表(5);
或者,如果您不想在知道它们是什么之前插入
book
s,您可以使用
0
(通过移除
(5)
初始值设定项)和
按需向后推
插入
图书来创建它

BookList[count] = new book(Array[count]);
基本上你是在做:
book=book*
这显然不起作用,因为它们是不同的类型。你可以删除
new
关键字:

BookList[count] = book(Array[count]);
这将创建一个临时
book
对象,并将其分配给BookList中的一本书

基本上你是在做:
book=book*
这显然不起作用,因为它们是不同的类型。你可以删除
new
关键字:

BookList[count] = book(Array[count]);

这将创建一个临时的
book
对象,并将其分配给BookList中的一本书。

似乎您正在创建一个
BookList
数组,并试图用
book
对象初始化它。您必须编写一个单独的setter方法来初始化成员变量
Name
。似乎您正在创建一个
BookList
数组,并试图用
book
对象初始化它。必须编写一个单独的setter方法来初始化成员变量
Name