C++仅在std :: map中初始化键

Nic*_*ick 0 c++ class stdmap

我正在寻找一种方法来初始化std :: map中的第一个值,然后根据键初始化第二个值.这是我的代码:

#pragma once
#include <string>
#include <map>

class Student
{
public:

    Student(
        double Score_Maths,
        double Score_Eng,
        double Score_Chem,
        double Score_Bio,
        double Score_His
        );
    ~Student();


private:

    std::string Surname;
    std::map<std::string, double> Subject_Scores = { {"Maths"}, {"English"}, {"Chemistry"}, {"Biology"}, {"History"} };

};
Run Code Online (Sandbox Code Playgroud)

我想要做的是,在类中已经有了这些键,然后使用构造函数初始化值,但当然在初始化地图时显示错误,任何帮助?

Max*_*hof 5

使用构造函数初始化值

您可以直接在构造函数中执行这两项操作:

https://godbolt.org/g/hWhcxu

class Student
{
public:

    Student(
        double Score_Maths,
        double Score_Eng,
        double Score_Chem,
        double Score_Bio,
        double Score_His
        )
        :
        Subject_Scores({ {"Maths", Score_Maths},
                         {"English", Score_Eng},
                         {"Chemistry", Score_Chem},
                         {"Biology", Score_Bio},
                         {"History", Score_His} })
    {
    }
    ~Student();

private:
    std::map<std::string, double> Subject_Scores;
}
Run Code Online (Sandbox Code Playgroud)

这仍然可以确保您的地图在整个课程生命周期内有效并初始化.