我是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;
}
答案 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;
}