提问者:小点点

如何在C++中创建类的对象数组(MinGW64,Posix,C++,运行在windows 64bit intel ia_32)


我试图创建一个自定义类型的数组,就像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

共1个答案

匿名用户

这里的建议一如既往地是使用一些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;

现场演示

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++|中|创建|类|对象|数组|mingw64|posix|c++|运|行在|windows|64bit|intel|ia_32)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?