用 C++ 中的对象填充列表时出现奇怪的问题?

A.D*_*rov -2 c++ oop list

我创建了一个类Patient,我想填充Patients我通过显式构造函数创建的对象列表。但是,Type name is not allowed当我尝试list<Patient>使用 `={}(初始化列表)填充时出现错误。我想问一下我做错了什么?

#include "pch.h"
#include <iostream>
#include <string>
#include <list>
using namespace std;
class Patient {
    string name;
    string birthday;
    int visits;
    public:
    Patient(string n, string b, int v) {
        name = n;
        birthday = b;
        visits = v;
    }

};
list<Patient> sp = {
Patient a("I.Petrov", "21.12.02", 4),
Patient b("D.Stoyanov", "12.02.97", 7),
Patient c("K.Dimitrov", "07.08.90", 1)
};

int main()
{



    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 5

列表的初始值设定项采用一系列表达式,但您已经为它提供了完整的变量声明。这根本不是有效的语法。您只能将声明放在函数或命名空间范围内的“可用空间”中,而不能放在另一个语句中(为了这个答案,我们将忽略条件的乐趣)。

您可能打算创建一些临时文件:

list<Patient> sp = {
   Patient("I.Petrov", "21.12.02", 4),
   Patient("D.Stoyanov", "12.02.97", 7),
   Patient("K.Dimitrov", "07.08.90", 1)
};
Run Code Online (Sandbox Code Playgroud)

但我会把它写成:

std::list<Patient> sp{
   {"I.Petrov",   "21.12.02", 4},
   {"D.Stoyanov", "12.02.97", 7},
   {"K.Dimitrov", "07.08.90", 1}
};
Run Code Online (Sandbox Code Playgroud)