Frage

Ich beginne mit Strukturen und habe Probleme, mein Strukturarray dynamisch zuzuweisen. Ich mache das, was ich in meinem Buch und im Internet sehe, aber ich kann es nicht richtig machen.

Hier finden Sie beide vollständigen Fehlermeldungen:

C2512: 'Datensatz': Kein geeigneter Standardkonstruktor verfügbar

IntelliSense: Es gibt kein Standardkonstruktor für die Klasse "Rekord"

#include <iostream>
#include <string>
using namespace std;

const int NG = 4; // number of scores

struct Record
{
    string name;  // student name
    int scores[NG];
    double average;

    // Calculate the average
    // when the scores are known
    Record(int s[], double a)
    {
        double sum = 0;

        for(int count = 0; count != NG; count++)
        {
            scores[count] = s[count];
            sum += scores[count];
        }

        average = a;
        average = sum / NG;
    }
};

int main()
{
    // Names of the class
    string names[] = {"Amy Adams", "Bob Barr", "Carla Carr",
                      "Dan Dobbs", "Elena Evans"};

    // exam scores according to each student
    int exams[][NG]= {  {98, 87, 93, 88},
                        {78, 86, 82, 91},
                        {66, 71, 85, 94},
                        {72, 63, 77, 69},
                        {91, 83, 76, 60}};

    Record *room = new Record[5];


    return 0;
}
War es hilfreich?

Lösung

Der Fehler ist ziemlich klar. Wenn Sie versuchen, ein Array zuzuweisen:

Record *room = new Record[5];

ein Standardkonstruktor, dh Record::Record(), muss implementiert werden, damit 5 Fälle von Record kann erstellt werden:

struct Record
{
    ...
    Record() : average(0.0) { }
    Record(int s[], double a) { ... }
};

Beachten Sie auch, dass die dynamische Zuweisung etwas ist, das Sie in C ++ so viel wie möglich vermeiden möchten (mit Ausnahme der Situationen, in denen Sie wirklich einen guten Grund dafür haben). In diesem Fall wäre es vernünftiger, eine zu verwenden std::vector stattdessen:

std::vector<Record> records(5);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top