我试图创建一个自定义类型的数组,就像C++中的对象一样。由于C++支持int、float等本机对象,因此创建它们的数组不是问题。
但当我创建一个类并创建一个数组时,它就不起作用了。
下面是我的代码:
#include <iostream>
#include <string.h>
using namespace std;
class Employee
{
string name;
int age;
int salary;
public:
Employee(int agex, string namex, int salaryx)
{
name = namex;
age = agex;
salary = salaryx;
}
int getSalary()
{
return salary;
}
int getAge()
{
return age;
}
string getName()
{
return name;
}
};
int main(void)
{
Employee **mycompany = {};
//Create a new Object
mycompany[0] = new Employee(10, "Mayukh", 1000);
string name = mycompany[0]->getName();
cout << name << "\n";
return 0;
}
没有编译错误,但当我运行程序时,它崩溃了。我不知道这里到底发生了什么。
请帮帮忙。
Here are some more details:
OS: 64bit Windows 8.1 on Intel x64 (i3)
Architecture of Compiler: MinGW64 G++ Compiler
这里的建议一如既往地是使用一些STL contanier,如std::vector
。
如果您真的必须通过手动内存分配来完成,首先您需要一个默认的employee
构造函数:
//...
Employee() = default; // or Employee(){}
Employee(int agex, string namex, int salaryx)
{
name = namex;
age = agex;
salary = salaryx;
}
//...
其次,使用内存分配的对象数组如下所示:
// Employee array with 2 employees
Employee *mycompany = new Employee[2] {{10, "Mayukh", 1000}, {20, "Mayukh2", 2000}};
不要忘记删除后的内存:
delete [] mycompany;
现场演示