当前位置: 首页 > 知识库问答 >
问题:

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

程鸿波
2023-03-14

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

狄新立
2023-03-14

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

现场演示

 类似资料:
  • 问题内容: 我有一个需要将对象数组存储在变量中的要求。对象是不同类型的。请参考以下示例: 注意第二个元素是字符串本身的数组。经过研究,我想将其存储为以下接口类型: 尽管如此,我还是遇到了一些无法找到的编译错误。 问题答案: 您要的是可能的- 游乐场链接: 但是您可能不想这样做。您正在与类型系统进行斗争,如果您这样做,我会质疑您为什么要使用Go。考虑利用类型系统- 游乐场链接:

  • 我试图创建一个由子类定义的对象数组(我认为这是正确的术语)。我可以看到这个问题反复出现,但实现仍然存在问题。 我的代码 给出错误 线程“main”java.lang.NullPointerException中出现异常。 为了使其合理化,我将其分解为最简单的术语: 这似乎奏效了。我只是看不出我的两个例子有什么不同。我知道我的第一个没有意义,但是MyClass最终会包含更多的数据。) 我很肯定这个问题

  • 我们通过添加所有必需的对象,使用内部库(C)以编程方式创建PDF,以便PDF阅读器能够正确地呈现它们。目前,我们正在增强库以支持PDF格式的数字签名。我们的用户将使用USB令牌或Windows证书签署PDF。在研究带有数字签名的原始PDF文件时,我们能够理解除Sig类型对象内容之外的所有对象。 我们参考了https://www.adobe.com/devnet-docs/acrobatetk/to

  • 本文向大家介绍如何在Python中创建类对象?,包括了如何在Python中创建类对象?的使用技巧和注意事项,需要的朋友参考一下 使用该类的构造函数创建一个类对象。然后将该对象称为类的实例。类实例化使用函数表示法。  在下面的代码中,我们定义一个类并创建了相同类的实例,如下所示

  • 本文向大家介绍如何在C#中创建StringBuilder?,包括了如何在C#中创建StringBuilder?的使用技巧和注意事项,需要的朋友参考一下 要在C#中创建StringBuilder,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 例如,类的ViewBag属性,我们可以动态地获取/设置值,并向该对象添加任意数量的附加字段或属性,这很酷。我想在其他类型的应用程序中使用类似的东西,除了MVC应用程序和类之外。当我试图创建动态对象并设置它的属性时,如下所示: 我有,带有message属性或索引器'<>f__anonymoustype0.a'不能赋值--它在第2行中是只读的。我也认为这不是我想要的。也许有什么课可以让我做一些类似的事