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

Anonymous

unregistriert

1

22.10.2005, 02:58

Überladene Konstruktoren...

Hallo

bin grad beim Listing 7.6 'Überladene Konstruktoren'. Einfach erstmal der 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
#include <iostream>
using namespace std;

class CRaumschiff
{
private:
    int m_xpos;
    int m_ypos;
    int m_Energie;
    int m_fGeschwindigkeit;

public:
    CRaumschiff();
    CRaumschiff(int a);
    void ZeigeDaten();
};
CRaumschiff::CRaumschiff()
{
    cout <<"Konstruktor aufgerufen" << endl;
    m_Energie = 100;
    cout <<"Konstruktor fertig!" << endl;
}
CRaumschiff::CRaumschiff(int a=0)
{
    cout <<"Konstruktor aufgerufen!" << endl;
    m_Energie = a;
    
    cout <<"Raumschiff wurde initialisiert!" << endl;
}
void CRaumschiff::ZeigeDaten()
{
    cout << m_Energie << endl;
}

int main()
{
    CRaumschiff Spieler(5);
    CRaumschiff Gegner;

    cout << "Spieler: " << endl;
    Spieler.ZeigeDaten();

    cout <<"Gegner: " << endl;
    Gegner.ZeigeDaten();

    return 0;
}


Beim Kompilieren wirft er mir aber immer einen Fehler...

Quellcode

1
2
3
4
e:\Kap6\Konstruktor\main.cpp(35) : error C2668: 'CRaumschiff::CRaumschiff': Mehrdeutiger Aufruf einer überladenen Funktion
        e:\Kap6\Konstruktor\main.cpp(11): kann 'CRaumschiff::CRaumschiff(int)' sein
        e:\Kap6\Konstruktor\main.cpp(10): oder       'CRaumschiff::CRaumschiff(void)'
        bei Anpassung der Argumentliste '(void)'


Ich kann aber bei aller Liebe keinen relevanten Unterschied zum im Buch angeführten Beispiel sehen... bin ich blind? :)

Grüße
Gast

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

2

22.10.2005, 06:28

Hallo Gast.
ich hab dieses buch zwar nicht gelesen aber
der Fehler ist offensichtlich ich habs hier mal schnell abgeändert:

Quellcode

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
#include <iostream> 
using namespace std; 

class CRaumschiff 
{ 
private: 
    int m_xpos; 
    int m_ypos; 
    int m_Energie; 
    int m_fGeschwindigkeit; 

public: 
    CRaumschiff(); 
    CRaumschiff(int a); 
    void ZeigeDaten(); 
}; 
CRaumschiff::CRaumschiff() 
{ 
    cout <<"Konstruktor aufgerufen" << endl; 
    m_Energie = 100; 
    cout <<"Konstruktor fertig!" << endl; 
} 
CRaumschiff::CRaumschiff(int a) 
{ 
    cout <<"Konstruktor aufgerufen!" << endl; 
    m_Energie = a; 
    
    cout <<"Raumschiff wurde initialisiert!" << endl; 
} 
void CRaumschiff::ZeigeDaten() 
{ 
    cout << m_Energie << endl; 
} 

int main() 
{ 
    CRaumschiff Spieler(5); 
    CRaumschiff Gegner; 

    cout << "Spieler: " << endl; 
    Spieler.ZeigeDaten(); 

    cout <<"Gegner: " << endl; 
    Gegner.ZeigeDaten(); 

    return 0; 
}


MFG

Kasenoru

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

22.10.2005, 16:32

Es liegt an dem 2. Konstruktor. Diort hast du in der Implementierung ...(a = 0) reingeschrieben.
Wie soll der Compiler den das unterscheiden, ob du nun den ersten meinst oder den zweiten, wo a standartmäßig 0 ist, und nicht angegeben werden muss?

Anonymous

unregistriert

4

22.10.2005, 19:36

Urgs... jetzt ist klar.
Danke.

Werbeanzeige