C++ 运行失败(退出值1)c++;

C++ 运行失败(退出值1)c++;,c++,netbeans,C++,Netbeans,我正在为员工数据构建一个程序,由于某些原因,我的代码无法运行,我已经搜索了这个论坛和其他论坛,我无法找出代码的问题 #include <cstdlib> #include <iomanip> #include <iostream> using namespace std; class Employee{ public: int idNumber; float SalaryRate; char *

我正在为员工数据构建一个程序,由于某些原因,我的代码无法运行,我已经搜索了这个论坛和其他论坛,我无法找出代码的问题

#include <cstdlib>
#include <iomanip>
#include <iostream>

using namespace std;


class Employee{
    public:

        int idNumber;
        float SalaryRate;
        char * name;
        int BaseSalary;
        char * hisname;
        float salary;
        float bonus;
        float finalSalary;

        Employee(int idNum) //default constructor function
        {
            SalaryRate=0;
            BaseSalary=0;
            idNumber=idNum;
            BaseSalary=0;
            salary=0;
            bonus=0;        
        }
        //constructor function with parameters
        Employee(char * name, int SalaryRate, int idNumber)
        {

            SalaryRate=0;
            idNumber=0;
            strcpy(name, hisname) ;
        }

        float setBonus()
        {
            cout<<"What is the bonus for this employee?\n";
            cin>>bonus;

        }

        void increaseSalary (float increase)
        {
            cout<<"By what percentage would you like to increase ";
            cout<<"p";
            cout<<"'s salary? \n";
            cin>>increase;
            finalSalary = salary * (increase/100)+bonus;
        }


        void print ()
        {
            cout<<"the salary of ";
            cout<<* name;
            cout<< " is "; 
            cout<<finalSalary; 
        }
};


int main() {
    Employee * employees[100];

    for(int i = 0; i < 100; i++)
    {
        cout<<"What is the name you would like to input? ";
        cin>>employees[i]->name;
        int idNumber=i;
        cout<<"What is "; employees[i]->name; "'s hourly rate? ";
        cin>>employees[i]->SalaryRate;       
    }

    //Employee a();
    //a.increaseSalary();

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
班级员工{
公众:
国际电话号码;
浮动工资率;
字符*名称;
基本工资;
查尔*他的名字;
浮动工资;
浮动奖金;
浮动终审法院;
Employee(int-idNum)//默认构造函数
{
工薪率=0;
基本工资=0;
idNumber=idNum;
基本工资=0;
工资=0;
奖金=0;
}
//带参数的构造函数
员工(字符*姓名、内部工资率、内部ID号)
{
工薪率=0;
idNumber=0;
strcpy(姓名、他的姓名);
}
浮点数()
{
库特波努斯;
}
无效增加工资(浮动增加)
{

cout指针数组
employees[i]
没有分配任何内存。
您需要为指针分配内存,以便能够以有意义的方式使用它们。
此外,
您试图将数据写入未分配的指针,导致未定义的行为
您需要使用
new
为指针
name
分配足够的内存来保存输入的字符串


此外,您需要遵循类的

您正在为员工分配100个指针。但这些指针尚未构建

Employee* employees[100];

for(int i = 0; i < 100; i++)
{
    Employee* emp = new Employee(i);
    cout<<"What is the name you would like to input? ";
    cin >> emp->name;
    int idNumber=i;
    cout << "What is "; emp->name; "'s hourly rate? ";
    cin >> emp->SalaryRate;

    employees[i] = emp;
}
员工*员工[100];
对于(int i=0;i<100;i++)
{
员工*emp=新员工(i);
cout emp->name;
int-idNumber=i;
不能说出“的小时费率”吗;
cin>>环境管理计划->工资率;
雇员[i]=环境管理计划;
}

您没有初始化您的
员工*employees[100];
也没有初始化employees中的字符串

也许你想要的是:

class Employee{
public: 
    int idNumber;
    float SalaryRate;
    std::string name; // <--- !
    int BaseSalary;
    std::string hisname; // <--- !
    float salary;
    float bonus;
    float finalSalary;  
...
};
int main() {
    Employee employees[100]; // <--- !

    for(int i = 0; i < 100; i++)
    {
        cout<<"What is the name you would like to input? ";
        cin>>employees[i].name;
        int idNumber=i;
        cout<<"What is "; employees[i].name; "'s hourly rate? ";
        cin>>employees[i].SalaryRate;
    }

    //Employee a();
    //a.increaseSalary();

    return 0;
}
class员工{
公众:
国际电话号码;
浮动工资率;

std::string name;//我发现了几个问题:

  • 不分配员工(如其他答案所述)

  • 期望
    cout它会很快崩溃

    这是因为:

    Employee * employees[100];
    
    声明一个包含100个员工指针的数组,而不是对象

    然后在循环中尝试访问不存在的对象:

    employees[i]->name
    
    因为您正在通过尚未初始化的指针进行访问。
    在开始使用指针和动态分配的对象之前,您需要了解对象

    Employee     employees[100];   // Declare an array of 100 objects.
    
    然后,您可以使用以下命令读取名称:

    cin >> employees[i].name;
    

    但是现在你有一个问题,名称是一个统一的指针。问题是这样的。你需要从代码中删除指针,并尽可能地使用Objects。

    你有什么问题?如果你不能编译它,编译器会收到什么错误消息?我如何初始化Employee*employees[100]字符串呢?我刚才向你们展示了,在我的代码中它是自动的。
    std::string
    构造函数处理它。
    employees
    现在是一个employees数组,它被自动初始化,而不是像以前那样是一个指向employee的指针数组。我知道我没有正确使用指针,所以我想了解如何使用它们-我如何初始化指针?@ USE116636:<代码>雇员*雇员=新雇员[100 ];删除[]雇员;< /代码>。我个人的观点是,在问这些问题之前,你确实应该读一本C++的书。