C++ 在std::数组中保存另一个类的对象的类意外地进入数组中子类的构造函数

C++ 在std::数组中保存另一个类的对象的类意外地进入数组中子类的构造函数,c++,class,constructor,containers,C++,Class,Constructor,Containers,我们的任务是创建一个基于类的待办事项列表。我创建了一个名为Task的类和另一个名为List的类。列表有一个std::数组作为成员,其中包含Task类型的对象。List有一个成员函数,用于创建任务和打印整个列表 我面临的问题是,std::array声明自动调用Task的构造函数3次,并将任务写入数组。当使用数组时,这不是什么问题,并为我保存了不再需要调用的createTask()函数,但是如果我想使用Std::vector来保存可变数量的任务,我总是会得到一个错误“vector subscript

我们的任务是创建一个基于类的待办事项列表。我创建了一个名为Task的类和另一个名为List的类。列表有一个std::数组作为成员,其中包含Task类型的对象。List有一个成员函数,用于创建任务和打印整个列表

我面临的问题是,
std::array
声明自动调用Task的构造函数3次,并将任务写入数组。当使用数组时,这不是什么问题,并为我保存了不再需要调用的
createTask()
函数,但是如果我想使用
Std::vector
来保存可变数量的任务,我总是会得到一个错误“vector subscript out out range”。此外,我只想在需要时添加任务,直到容器类型已满为止。我如何着手解决这个问题

class Task
{
private:
    std::array<std::string, 3> m_list;
    std::string m_completed{ "no" };
public:
    Task()
    {

        std::cout << "Enter Task Name: ";std::cin >> m_list[0]; //cant do white spaces yet
        m_list[1] = "23.04.2021"; //needs way of getting current date
        m_list[2] = m_completed;
        system("CLS");

    }

    void printTask()const
    {
        std::cout << "Task Name: " << m_list[0] << "         " << "created on: " << m_list[1] << "         " << "completed?: " << m_list[2] << std::endl;
        std::cout << "------------------------------------------------------------------------------------------------------------------------" << '\n';
    }

   
};  

class List{
private:
    std::array<Task,3> listOfTasks; //this automatically calls the constructor 3 times and writes the objects into the array 
    int m_vectorsize{ 0 };
public:
    List() {};
    
    void createTask()
    {
        Task t1;
        listOfTasks[m_vectorsize] = t1;
        ++m_vectorsize;

    }

    
    void printTasklist()
    {
        
        for (int count{ 0 }; count <3;count++)
        {
            
            listOfTasks[count].printTask();
            
        }

    }
    

    };
类任务
{
私人:
std::数组m_列表;
std::字符串m_已完成{“no”};
公众:
任务()
{
std::cout>m_list[0];//还不能使用空格
m_list[1]=“23.04.2021”;//需要获取当前日期的方法
m_列表[2]=m_已完成;
系统(“CLS”);
}
void printTask()常量
{

std::cout
std::vector
似乎真的是一个适合您的问题的数据结构。您能告诉我们您试图在哪里使用它的代码吗?并且,请更好地格式化您的代码。至少删除所有不必要的空行。此外,您应该只在
printTaskList
中迭代
m_vectorsize
次,而不是3次。如果是你想拥有一盒东西,你首先需要做的东西,就这么简单。