İki işlev içeren C++ Sınıfı. Ana bellekte bellek ayırma

0

Soru

bu yüzden aşağıdaki görevi çözmeye çalışıyorum:

Task

Aşağıda bulduğum kod var. Verileri doğru depolamakta sorun yaşıyorum ve read() ve output() işlevini nereye koyacağımdan emin değilim. Bu muhtemelen çok zor değil ama hala emin değilim. Biri bana ipucu verebilir mi? Teşekkürler!

 #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++ c++14 class dynamic
2021-11-23 19:11:33
1

En iyi cevabı

0

Kodunuzu çalıştırmadan, çalışan bir çözüme oldukça yakın görünüyor Verileri Çalışan sınıfınızın örneğinin alanlarında tutuyorsunuz

yığının üzerinde bir yerde saklıyorsun. Ve o işaretçisi ile erişme

bazı öneriler:

Okuma işlevine herhangi bir şey aktarmaya gerek yoktur, çağrı başına bir çalışan ayrıntısında okuyor.

Birden fazla çalışan oluşturmak istiyorsanız, bunları tutmak için bir vektör oluşturmak istersiniz, daha sonra n kez çalışan bir for döngüsü ve bu for döngüsünün içinde yeni bir çalışan oluşturun, okuma ve çıktı işlevlerini çağırın ve bunları vektöre ekleyin (aksi takdirde işaretçilerinizi kaybedersiniz ve bir bellek sızıntısı olur).

İşaretçinizi dereference etmek ve okuma işlevini çağırmak için o->read() öğesini kullanın.

Çalışanınızın alanları en iyi şekilde özel üye değişkenleri yapılır. Yani isim, bölüm, yaş. Bu hala derlenecek ve çalışacaktır, ancak herkese açık olmaları gerekmedikçe işleri özel yapmak daha iyi bir tasarımdır.

Ayrıca, son satıra ihtiyacınız olduğunu düşünmüyorum, zaten yeni bir çalışan ve yukarıdaki satırda bir işaretçi oluşturdunuz.

son olarak, silmeye gittiğinizde, çalışan vektörünüzü tekrarlayın ve her birini silin.

Bu noktada kısa bir süre, ancak geri dönüp ihtiyacınız olursa daha sonra bazı kod örnekleri eklemeye çalışacağım.

2021-11-24 20:52:16

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................