C ++“没有用于初始化Employee的匹配构造函数”

时间:2014-12-19 07:46:50

标签: c++ vector

我是C ++的新手并且使用vector作为对象。但是,我收到错误"没有匹配的构造函数用于初始化Employee"当我尝试运行以下程序时。 请告诉我如何修改我的程序!

另外,当我写作 工作人员[0] =员工{"哈利波特" 55000}; 这是否意味着我将字符串和双数据存储在Employee?

类型的向量对象中的10个打开框之一中

我为这样一个基本问题道歉。 非常感谢你提前!!

#include<iostream>
#include<string>
#include<vector>

using namespace std;

class Employee
{
    public:
        Employee(string, double);
        double get_salaries();
        string get_name();
        void set_salaries(double);
    private:
        string name;
        double salaries;
};
Employee::Employee(string n, double s)
{
    name = n;
    salaries = s;
}
double Employee::get_salaries()
{
    return salaries;
}
string Employee::get_name()
{
    return name;
}
void Employee::set_salaries(double s)
{
    salaries = s;
}

int main()
{
    // using vector as an object

    int i;
    vector<Employee> staff(10);                   
    staff[0] = Employee{"Harry Potter", 55000};

    if (staff[i].get_salaries() < 100000)
        cout << staff[i].get_salaries();


    return 0;
}

3 个答案:

答案 0 :(得分:2)

您的Employee类没有默认的无参数构造函数 创建staff向量时,它将创建10个Employee对象,从而调用默认构造函数。

答案 1 :(得分:1)

为了支持这一点,

vector<Employee> staff(10);                   

你必须在你的班级中提供默认构造函数。

答案 2 :(得分:-1)

您的主要方法

int main()
{
    // using vector as an object

    int i;                           // [i] not initialized anywhere.      
    vector<Employee> staff(10);     // Incorrect way of declaring a vector                 
    staff[0] = Employee{"Harry Potter", 55000}; // Incorrect way of creating a instance of class

    if (staff[i].get_salaries() < 100000)
        cout << staff[i].get_salaries();


    return 0;
}

像这样改变你的主要方法

 int main()
{
     vector<Employee> staff;         
     staff.push_back(Employee("Harry Potter", 55000));

    if (staff[0].get_salaries() < 100000)
        cout << staff[0].get_salaries();

    return 0;
}