JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=a2788a22a7cb69909f42bea27d68f56bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit der Vererbung
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 16:44    Titel: Problem mit der Vererbung Antworten mit Zitat

also ich krieg immer folgenden fehler:

Zitat:
(6) : error C2011: 'Sprite' : 'class' type redefinition
(25) : error C2556: 'int __thiscall Sonic::Left(void)' : overloaded function differs only by return type from 'void __thiscall Sonic::Left(void)'
(13) : see declaration of 'Left'
(25) : error C2371: 'Left' : redefinition; different basic types
(13) : see declaration of 'Left'


ich hab die Sprite Class wie im Buch und dann hab ich halt
ne andere class gemacht und

Code:

class blabla :: public Sprite
{
}


wo is der fehler, was mach ich falsch ?
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MAG
Mini JLI'ler



Anmeldedatum: 21.11.2002
Beiträge: 15
Wohnort: Falkenrehde/Brandenburg/Deutschland
Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 17:17    Titel: Antworten mit Zitat

Hm,ich habe jetzt zwar den Buchcode nicht,aber...
Vieleicht liegt das Problem nicht bei der Veerbung.
Eventuell hast du versucht einige Funktion der Klasse Sprite zu überschreiben?Wenn ja, sollten diese in der Klasse Sprite virtuell sein.
Aber ich weiß jetzt nicht so genau wo der Fehler noch liegen könnte.
Könntest du mal den ganzen Code posten?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Darkevel
Mini JLI'ler



Anmeldedatum: 11.11.2002
Beiträge: 10

Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 17:23    Titel: Mehrfachdeklaration Antworten mit Zitat

Kann es sein das du deine Klasse untereinander einbindest und anschliesend beide Dateien in die ausführende cpp Datei einbindest?
Versuch mal beide Klasse hiermit vor Mehrfachdeklaration zu schützen:

Code:

#ifndef class_name
#define class_name
//hier der Klasse Code
#endif
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MAG
Mini JLI'ler



Anmeldedatum: 21.11.2002
Beiträge: 15
Wohnort: Falkenrehde/Brandenburg/Deutschland
Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 17:23    Titel: Antworten mit Zitat

Achja, anscheinend liegt der Fehler in der Deklaration von Left().
Steht ja auch in der Fehlermeldung.Also ich denke mal das du vielleicht die Methode Left() welche schon in der Klasse Sprite vorhanden ist neudefiniert.Oder, falls du die Methode normaler Weise ausserhalb der Klassendefinition deklarierst, du hast in der Funktionsdeklaration eine andere Parameterliste verwendet oder sowas Ähnliches.
Zum Beispiel:

class Gegner : public Sprite
{
void Left(void);
};

void Gegner::Left(int distance)
{
// deklaration
}

Könnte das sein?Ich kann nur raten! Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 20:18    Titel: Antworten mit Zitat

das letze war richtig MAg, nun sind die fehler weg Very Happy
aber ich hab immer noch folgenden:

Zitat:
sprite.h(6) : error C2011: 'Sprite' : 'class' type redefinition

_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DaN00b
JLI'ler



Anmeldedatum: 10.08.2002
Beiträge: 159

Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 21:22    Titel: Antworten mit Zitat

bei vererbung nur ein :
mag hat das ja schon richtig geschrieben aber bei dir scheinen immer noch zwei :: zu sein
_________________
Carpe Diem - Seize the day - Nütze den Tag!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 12:31    Titel: Antworten mit Zitat

ne is nur ein ":"

Code:
class Sonic : public Sprite
{



help Sad
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 13:34    Titel: Antworten mit Zitat

Es scheint so, als hättest du Sprite in Zeile 6 neu definiert, und zwar nicht als class sondern irgendwas anderes (das meint zumindest die MSDN zum Fehler C2011).
Zeig' doch mal den Code in Zeile 6.
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 13:43    Titel: Antworten mit Zitat

Code:
// Klasse für Sprites

class Sprite
{
    public:
        Sprite();


Code:
class Sonic : public Sprite
{
public:

Sonic();


könnte es daran liegen das ich in der "Sonic.h" die Sprite.h includiere, aber ich brauch die doch damit ich zugriff zur Sprite.h hab oder?
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hasenfuß
Senior JLI'ler


Alter: 36
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 15:03    Titel: Antworten mit Zitat

Hast du vielleicht in der Sprite.h die #ifndef,#define und #endif vergessen? (steht oben wie das geht)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 15:59    Titel: Antworten mit Zitat

dann krieg ich 425 fehler Sad
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MAG
Mini JLI'ler



Anmeldedatum: 21.11.2002
Beiträge: 15
Wohnort: Falkenrehde/Brandenburg/Deutschland
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 16:19    Titel: Antworten mit Zitat

Hm, also das kann ich mir wirklich nicht erkären.Wie gesagt,dazu müsste ich den gesamten Code sehen.Vielleicht kannst du ihn mir per eMail schicken?
(mag@gap-project.net)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 16:42    Titel: Antworten mit Zitat

semikolon vergessen?

und was für fehler kommen wenn du #define.. in der sprite.h machst?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 18:43    Titel: Antworten mit Zitat

nun gehts mit

Code:

#ifndef class_name
#define class_name
//hier der Klasse Code
#endif
 


im Buch stehen dazu keine Erklärungen...

was macht #ifndef ? und define müste doch eigendlich so immer sein oder?

#define AUFLOESUNG 1024
z.b Very Happy
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 27.11.2002, 22:29    Titel: Antworten mit Zitat

#ifdef Überprüft, ob eine Konstante gesetzt ist, egal mit welchem Wert.
#ifndef Überprüft, ob eine Konstante nicht gesetzt ist.
#define Setzt eine Konstante. Wenn Kein Wrt angegeben wird, wird der Wert 1 angenommen.
#undef löscht eine gesetzte Konstante.

Damit lassen sich bedingte Kompilierungen erreichen.
Angenommen, du Schreibst ein Programm, das für Windows und für Linux Kompiliert werden soll. Nicht alle Programmteile lassen sich in Beiden Betriebssystemen verwenden, also schreibt man z.B.

#ifdef WINDOWS
// Windowsspeziefischer Code
#elif LINUX
// Linuxspeziefischer Code
#else
// Code für andere BS
#endif

Verstanden?

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum