【发布时间】:2021-07-24 14:16:44
【问题描述】:
我正在尝试用 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;
}
没有编译错误,但是当我运行程序时,它崩溃了。我不知道这里到底发生了什么。
请帮忙。
这里有更多细节:
OS: 64bit Windows 8.1 on Intel x64 (i3) Architecture of Compiler: MinGW64 G++ Compiler
【问题讨论】:
-
你的错误在这里:
Employee **mycompany = {};和mycompany[0] = new Employee(10, "Mayukh", 1000);如果你要创建一个二维动态数组,你需要在使用它之前分配第一个维度。 -
@drescherjm,我该怎么做?我尝试做
Employee *mycompany = {}并删除了 new 关键字,因为它现在指向对象,但我的程序在运行时仍然崩溃。请帮忙。 -
我注意到当我使用 Vectors 时,它可以正常工作。请告诉我哪里错了
-
int main(void) { vector<Employee> a; a.push_back(Employee(10, "Mayukh", 200)); string name = a[0].getName(); cout << name << "\n"; return 0; }
标签: c++ arrays object memory-management dynamic-memory-allocation