gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:30:02 25 4
gpt4 key购买 nike

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

#include <iostream>
#include <string>
using namespace std;

class book
{
private:
string Name;
public:
book();
book(string&);
};

book :: book()
{}

book :: book(string& temp)
{
Name = temp;
}

int main()
{
string Array[] = {"1", "2", "3", "4", "5"};
book *BookList = new book[5];
for (int count = 0; count < 5; count ++)
{
BookList[count] = new book(Array[count]);
}
return 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&)

我的意图是使用私有(private)成员值创建一个对象数组,这些成员值只有在循环收集相关数据后才能知道。我遵循 answer #2 to a question I asked here previously 中提供的建议.

最佳答案

book *BookList = new book[5]; 

BookList 是一个包含五个 book 对象的数组。

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

您正在尝试使用 BookList,就好像它是一个包含五个指向 book 对象的指针的数组。

BookList[count] 不是指向 countth book 的指针,它 计数

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

std::vector<book> BookList(5);

或者,如果您不想插入 book,直到您知道它们是什么,您可以使用 0 的初始大小创建它(通过删除(5) initializer) 和 push_back 或根据需要insert 书籍。

关于c++ - 填充动态创建的数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com