C++ Syntaxproblem

geronimo89

New member
Ich möchte eine Aufgabe bearbeiten, die ich in meinem kürzlich erworbenen Buch gefunden habe, leider komme ich nicht auf den Syntaxfehler, könntet ihr mir da helfen? (Programm steht so im Buch.)
Code:
// Kapitel 3, Aufgabe 8
#include <iostream>
using namespace std;
int main () {
	struct personal {
		char Name[31];
		long PersNr;
	};
	personal Mitarbeiter[3]={
		"Meier", 100922, 
		"Gandermann", 100873, 
		"Schmatz", 101920
	};

cout << "\nPersonalnummer von Meier: ";

cout << "\nName von Mitarbeiter 1000873: ";

cout << "\nErster Buchstabe von Mitarbeiter 101920: ";
return 0;
}
Der Compiler meckert 3mal:
Code:
06_struct test.cpp:13: warning: missing braces around initializer for ?main()::personal?
 

mucki

New member
Ich glaube in Zeile 10,11 und 12 fehlen Klammern zum Abtrennen der einzelnen Datensätze.
 

the_uxreal

New member
Hallo geronimo89,

ich habe es auf Visual Studio als auch auf Dev-C++ getestet. Bei dem kompilieren gab es vom Compiler aus keine Fehlermeldungen oder Warnungen. Das Programm funktioniert einwandfrei! Hast du vielleicht als Headerdatei gekennzeichnet oder im Einstellungen vom Compiler geändert?

the_uxreal =)
 

mucki

New member
Ich habs auch mal unter VC++ 6.0 ausprobiert und hatte auch keine Probleme. Da dein Compiler aber irgendetwas von fehlenden Klammern erzählt, versuche es vielleicht mal so:
Code:
	personal Mitarbeiter[3]={
		{"Meier", 100922}, 
		{"Gandermann", 100873},
		{"Schmatz", 101920}
	};
 

geronimo89

New member
Jau, jetzt gehts, ich Dösbaddel. Tut mir Leid, ich blicke bei diesen sehr expliziten Sprachen deren Problem manchmal nicht, vielen Dank.
 

LionC

New member
sryis jetz ein ischen vom thema abgewichen aber was soll dieses beispiel darstellen?
wrum benutz man sowas berhaupt wenn es doch klassen gibt?
 

xblax

Member of Honour
Ein Struct ist genau das gleiche wie eine Klasse, nur dass standardmäßig alle Eigenschaften als public deklariert sind.
 

xblax

Member of Honour
Original von Heinzelotto
und was ist mit Polymorphie, Vererbung? Funktionen/Prozeduren können auch nicht in structs sein.

Doch das geht schon, macht man nur normalerweise nicht.
Der Code hier funktioniert beispielsweise:

Code:
#include <iostream>
using namespace std;

struct Test{
    void ausgabe(){
        cout << "Testtext";
    }
};

int main()
{
        Test teststruct;
        teststruct.ausgabe();
        return 0;
}
 

Heinzelotto

New member
Original von xblax
Doch das geht schon, macht man nur normalerweise nicht.

So, hab mich informiert :)

in C++ ist ein struct wirklich einfach eine Klasse mit allen Membern defaultmäßig auf public, in einem struct, so wie es in C vorkommt, sind Funktionen aber nicht möglich, es sei denn, man speichert im struct einen Funktionspointer.
 

LionC

New member
und wie spricht man dann die einzelnen elemente in diesem array an?
und waru zur hölle macht man dann nicht einfach klassen?
 

Binäru$

Member
Hi,

Angesprochen werden die einzelnen Elemente durch den . Operator.
Also zb.:

Code:
personal personal1;
personal1.Name = "Hans";

Im Normalfall werden Klassen verwendet.
Jedoch beanspruchen Objekte mehr Systemressourcen, denn pro Objekt wird auch Beispielsweise ein Verwaltungsoverhead benötigt.
Bei einzelnen Objekten fällt das kaum ins Gewicht. Würden jedoch eine Vielzahl von Objekten aus der Klasse instanziert werden, sollte man lieber eine Struktur verwendet.
 
Oben