【问题标题】:C++ Class that contains two functions. Allocating memory in main包含两个函数的 C++ 类。在 main 中分配内存
【发布时间】:2022-01-02 06:46:06
【问题描述】:

所以我正在尝试解决以下任务:

下面是我想出的代码。我无法正确存储数据,我不确定将 read() 和 output() 函数放在哪里。这可能不是太难,但我仍然不确定。有人可以给我一个提示吗?谢谢!

 #include <iostream>
#include <iomanip>

using namespace std;

class Employee
{
public:
    string name, department;
    int age;

    void output(string &a, int &b, string &c)
    {
        cout << name << endl;
        cout << "Age: " << age << " years" << endl;
        cout << "Department: " << department << endl;
    }

    void read(int &n)
    {
            cout << "Enter number, last name and first name:";
            cin >> name;

            cout << "Enter age:";
            cin >> age;

            cout << "Enter department:";
            cin >> department;
        }
};

int main() {
    int n;
    cout << "Enter number of employees: ";
    cin >> n;
    Employee* o = new Employee;
    Employee employee;



   delete o;
}

【问题讨论】:

    标签: c++ class memory dynamic c++14


    【解决方案1】:

    如果不运行您的代码,它看起来非常接近有效的解决方案 您将数据保存在 Employee 类实例的字段中

    你存储在堆的某个地方。并使用指针 o 访问

    一些建议:

    无需向读取函数传递任何内容,它每次调用都会读取一个员工的详细信息。

    如果你想创建多个员工,那么你会想创建一个向量来保存他们,然后一个运行 n 次的 for 循环,在这个 for 循环中创建一个新员工,调用他们的读取和输出函数并将它们添加到向量(否则你会失去你的指针并有内存泄漏)。

    使用 o->read() 取消引用您的指针并调用它的读取函数。

    员工的字段最好设为私有成员变量。 即姓名,部门,年龄。 这仍然可以编译和运行,但最好将其设为私有,除非它们需要公开。

    另外我认为你不需要最后一行,你已经在上面的行中创建了一个新员工和一个指向它的指针。

    最后,当你去删除时,只需遍历你的员工向量并删除每一个。

    现在时间紧迫,但如果您需要,我会尝试回过头来添加一些代码示例。

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多