Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

26.09.2008, 15:29

erkennt Instanz nicht

Hallo,
ich habe mal wieder ein Porblem
Und zwar habe ich eine Instanz von einer Struktur erzeugt. Mit hilfe der Instanz lese ich dann übe einen String einen Namen ein.
Nur sagt er mir das diese Instanz in eine Union gehören muss oder so.

1>c:\oliver\c++\projekte\metatag-generator\metatag-generator\main.cpp(58) : error C2228: Links von ".autor" muss sich eine Klasse/Struktur/Union befinden.


Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>

using namespace std;

//Prototypen

void Eingabe ();
void Ausgabe();
int MainMenue();




//Strukturen

struct S_Eingabe
{
    char Eingabe [30];
};
//Instanzen

S_Eingabe autor;


int main ()
{
int Abfrage=0;
    
    do
    {
    int Abfrage=MainMenue ();
    
    //Bildschirm leeren

    system("cls");
    if(Abfrage==1)
        Eingabe ();
    
}while (Abfrage =!2);

return 0;

}


int MainMenue()
{
    int Auswahl;

    cout<<"Willkommen bei Metatag-Generator"<<endl;
    cout<<"[1]Metatag erstellen"<<endl;
    cout<<"[2] Beenden"<<endl;
    cin>>Auswahl;

    return Auswahl;
}

void Eingabe ()
{
    cout<<"Bitte geben sie den Namen des Autors der Website ein"<<endl;
    cin.ignore();
    cin.get(Eingabe.autor,29);

}


Ich könnte mir den Fehler nur an der Stelle vorstellen wo ich den Benutzer auf fordere einen Namen einzugeben nur weiss ich nicht was da falsch sein soll.

Anonymous

unregistriert

2

26.09.2008, 15:32

Du musst schreiben "autor.Eingabe" Erst die Klasse, dann das Attribut.

edit: Hast du nicht mehr diesen schönen Code von mir? Da kam doch auch sowas drin vor?

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

3

26.09.2008, 16:54

Re: erkennt Instanz nicht

C-/C++-Quelltext

1
2
3
...
}while (Abfrage =!2);
...


Das ist mal ein interessanter Fehler...

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

26.09.2008, 17:50

Re: erkennt Instanz nicht

Zitat von »"Mordrak"«

C-/C++-Quelltext

1
2
3
...
}while (Abfrage =!2);
...


Das ist mal ein interessanter Fehler...

Gruesse,
Mordrak


Das ist doch kein Fehler! Das ist doch ganz klar, eine 1-fach Schleife! :p
@D13_Dreinig

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

5

26.09.2008, 17:57

Also danke es geht jetzt. Ja code hab ich noch habs nur verwechselt.

Wasn an der Schleife so besonders?

Anonymous

unregistriert

6

26.09.2008, 18:01

Errschaffer
Du invertierst die 2 und setzt sie auf Abfrage.

C-/C++-Quelltext

1
while (Abfrage != 2) 
wäre richtig.

Apropos: Hast du in Mathe nicht gelernt vor und hinter Operatoren keine "Freistelle" zu lassen? ;) So ließt es sich nämlich dann leichter.

Wenn du diesen "göttlichen" Code noch hast, warum benutzt du ihn nicht als Ausgangspunkt oder beschäftigst dich mit dem intensiver? :)

7

27.09.2008, 13:47

Ich würde dir generell raten, alles einheitlich zu machen (Einrückung, Klammern und andere Operatoren, allgemein Leerzeichen). Das ist übersichtlicher und vermeidet auch Fehler wie diesen.

Die Funktion system() ist nicht portabel und hat auch sonst einige Nachteile. Du solltest dir das wenigstens im Hinterkopf behalten, wenn du sie weiterhin benutzt.

Übrigens kann man globale Instanzen (obwohl diese besser nicht vorkommen sollten) auch direkt erstellen:

C-/C++-Quelltext

1
2
3
4
struct S_Eingabe 
{ 
    char Eingabe [30]; 
} autor;

In C++ lohnt es sich meistens, Klassen (class) mit Konstruktoren zu verwenden, da man so eine Initialisierung sicherstellt. Ausserdem hast du die Möglichkeit, std::string zu benutzen, das ist sicherer und bequemer als char-Arrays. Dann kannst du auch gleich cin.operator>> verwenden ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

27.09.2008, 15:30

Zitat von »"Nexus"«


In C++ lohnt es sich meistens, Klassen (class) mit Konstruktoren zu verwenden, da man so eine Initialisierung sicherstellt.


Was spricht denn gegen Strukturen (struct) mit Konstruktoren?
@D13_Dreinig

9

27.09.2008, 15:38

Zitat von »"David_pb"«

Zitat von »"Nexus"«


In C++ lohnt es sich meistens, Klassen (class) mit Konstruktoren zu verwenden, da man so eine Initialisierung sicherstellt.


Was spricht denn gegen Strukturen (struct) mit Konstruktoren?

seitwann dürfen strukturen Konstruktoren haben?

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

10

27.09.2008, 15:41

Seit es C++ gibt? In C++ ist der einzige unterschiede zwischen class und struct das "voreingestellte" Zugriffslevel: public für struct und private für class.

Werbeanzeige