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

05.09.2008, 15:48

CField nicht deklariert

Hallo,
ich schon wieder.

Ich fang mal mit dem Code an:

main.cpp

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
#include <iostream>

 using namespace std;


//Prototypen

int MainMenue();



//Hauptprogramm

int main ()
{
//Variablen

CField Battelfield;
int Auswahl;
Auswahl=MainMenue (); 

//Hauptmenü verzweigen

switch (Auswahl)
{
case ('1'):
    {
    Battelfield.DrawField(40,40);
    }break;
}//switch


return 0;
}

int MainMenue()
{
    int Auswahl=0;
    
    cout<<"Willkommen bei Strategiespiel"<<endl;
    
    cout<<"Hauptmenue"<<endl;
    cout<<"[1]Spielen"<<endl;
    cin>>Auswahl;

    
return Auswahl;
}


Field.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
class CField
{
public:
    //Membervariablen für das Spielfeld

    const int m_hoehe;
    const int m_breite;

//Member Funktionen

void DrawField(const int m_hoehe,const int m_breite);

};


Field.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Die Funktion DrawField

#include <iostream>
#include "Field.h"

using namespace std;

void CField::DrawField(const int m_hoehe,const int m_breite)
{
    for (int h=0; h<m_hoehe;h++)
    {
        for (int b=0; b<m_breite;b++)
        {

        cout<<"-";
        }
        
    }

   

}


Fehlermeldung:
1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(15) : error C2065: 'CField': nichtdeklarierter Bezeichner
1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(15) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Battelfield'
1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(15) : error C2065: 'Battelfield': nichtdeklarierter Bezeichner
1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(24) : error C2065: 'Battelfield': nichtdeklarierter Bezeichner
1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(24) : error C2228: Links von ".DrawField" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>Code wird generiert...
1>Das Buildprotokoll wurde unter "file://c:\oliver\c++\Projekte\Strategiespiel\Strategiespiel\Debug\BuildLog.htm" gespeichert.
1>Strategiespiel - 5 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========


Ich kann mir nicht vorstellen was daran falsch sein soll.
Ich habe es genauso wie In listning 7.3 in Heiko's Buch gemacht.
Bins aber auch selber mehrmals durchgegangen.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

05.09.2008, 15:55

C-/C++-Quelltext

1
#include "Field.h"


In main.cpp

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

3

05.09.2008, 16:13

Danke.

Nur jetzt zeigt er mir allerdings das an :


1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(16) : error C2512: 'CField': Kein geeigneter Standardkonstruktor verfügbar

Kapier ich nicht ich dachte der wäre standartmäßig dabei.
Und Werte weise ich ja auch zu.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

05.09.2008, 16:16

Hast du vielleicht einen eigenen Konstruktor (mit Parametern) deklariert?
@D13_Dreinig

Anonymous

unregistriert

5

05.09.2008, 16:17

Ich sehe nicht, dass du irgendwo Werte zuweist?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

05.09.2008, 16:19

Zitat von »"Errschaffer"«

Danke.

Nur jetzt zeigt er mir allerdings das an :


1>c:\oliver\c++\projekte\strategiespiel\strategiespiel\main.cpp(16) : error C2512: 'CField': Kein geeigneter Standardkonstruktor verfügbar

Kapier ich nicht ich dachte der wäre standartmäßig dabei.
Und Werte weise ich ja auch zu.


const Variablen müssen im ctor initialisiert werden. (per Initialisierungsliste).

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

7

05.09.2008, 16:20

Nein ich habe keinen eigenen Deklariert.

Naja mit den werten meine ich das hier:

C-/C++-Quelltext

1
Battelfield.DrawField(40,40); 


Aber wieso klappt das jetzt nicht mit dem Konstruktor?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

05.09.2008, 16:24

Du brauchst aber einen, für die beiden Konstanten die du verwendest, wie drakon bereits richtig festgestellt hatte.
@D13_Dreinig

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

9

05.09.2008, 16:29

Ok dann mach ich das mal



edit:
Also meint ihr das so?

C-/C++-Quelltext

1
2
3
4
5
6
CField::CField ()
{
    ctor m_hoehe=40;
    ctor m_breite=40;

}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

05.09.2008, 16:35

Zitat von »"Errschaffer"«

Also meint ihr das so?


funktioniert das denn?^^

versuchs eher mal so:

C-/C++-Quelltext

1
2
3
CField::CField () : m_hoehe(40), m_breite(40)
{
}

Werbeanzeige