JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Templates oder Basisklassen-Zeiger???

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 10.08.2002, 11:05    Titel: Templates oder Basisklassen-Zeiger??? Antworten mit Zitat

Also,
Ich will eine Funktion schreiben, die auf die Basisklassenwerte Zugreifen kann. Ich will der Funktion einen Zeiger auf die Klasse, von der die Werte geändert werden sollen, übergeben.

Code:


void Zugriff(Basisklasse* Zeiger)

AbgeleiteteKlasse* pZeiger;

Zugriff(pZeiger);



geht das so?

Oder muss ich dazu Templates nehmen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian_Rousselle
Gast








BeitragVerfasst am: 10.08.2002, 13:29    Titel: Antworten mit Zitat

Das sollte so gehen.
Nach oben
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 10.08.2002, 14:06    Titel: Antworten mit Zitat

Ich hab es jetzt so versucht und hat nicht geklappt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 10.08.2002, 19:49    Titel: Antworten mit Zitat

poste noch mal deinen Code ausschnitt ganz genau!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 10.08.2002, 20:08    Titel: KANNS NICHT POSTEN!!! Antworten mit Zitat

Irgendwie kann ich das ganze Zeug nich posten, gibts ne maximale Buchstabenbegrenzung??? Trotzdem wenn´s jemand haben will soll er mir ne Mail schicken, dann bekommt derjenige den Quellcode per "Post".

mailto: VeruektesHuhn@gmx.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 10:46    Titel: Antworten mit Zitat

Bekommst du da einen Compilerfehler oder kann er nur die Werte nicht verändern? Vielleicht greifst du direkt auf private Variablen der Klasse zu, was ja nicht geht?
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 17:31    Titel: Antworten mit Zitat

Ich probiers mal mit mehreren posts.

Das Programm besteht aus:

-Haupt.cpp

Code:


#include <iostream.h>

#include "Basisklasse.h"
#include "AbgeleiteteKlasse.h"

AbgeleiteteKlasse AbKlasse;
AbgeleiteteKlasse* pZeiger = &AbKlasse;

void Zugriff(BasisKlasse* Zeiger)
{
Zeiger->i=40
}

void main(void)
{
Zugriff(pZeiger);

if(AbKlasse::i == 40)
{
cout<<"Klapt!"<<endl;
}
}

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 17:32    Titel: Antworten mit Zitat

Dann noch

AbgeleiteteKlasse.h

Code:


#ifndef _ABGELEITETEKLASSE_H
#define _ABGELEITETEKLASSE_H

#include "Basisklasse.h"

class AbgeleiteteKlasse : BasisKlasse
{
public:
int b;
AbgeleiteteKlasse();
~AbgeleiteteKlasse();
};

#endif



-AbgeleiteteKlasse.cpp

Code:


#include "AbgeleiteteKlasse.h"

AbgeleiteteKlasse::AbgeleiteteKlasse()
{
i = 20;
b = 30;
}

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 17:35    Titel: Antworten mit Zitat

-Basisklasse.h

Code:


#ifndef _BASISKLASSE_H
#define _BASISKLASSE_H

class BasisKlasse
{
public:
int i;

BasisKlasse();
~BasisKlasse();
};

#endif



-Basisklasse.cpp

Code:


#include "Basisklasse.h"

BasisKlasse::BasisKlasse()
{
this->i=10;
}



PS:

Ich hoffe Christian ist mir nicht böse das ich es mit mehreren posts gemacht hab, aber ich habs in einen nich reingekriegt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 09:42    Titel: Antworten mit Zitat

Ich habs jetzt noch nicht ausprobiert aber kann es sein, dass der Fehler kommt, wenn du schreibst AbgeleiteteKlasse::i ?

Wenn er bei der Funktion Zugriff auftritt - das würde ich ohnehin machen - solltest du bei der Ableitung ein public vor BasisKlasse schreiben. (Obs was bringt weiß ich nicht, fiel mir nur auf)
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 12:26    Titel: Antworten mit Zitat

Also, wenn ich das alles Kompiliere meldet der Kompiler:

Code:


--------------------Konfiguration: BasisklassenZeiger - Win32 Debug--------------------
Kompilierung läuft...
Haupt.cpp
C:\C++\TESTPROJEKTE\BasisklassenZeiger\Haupt.cpp(16) : error C2243: 'type cast' : Konvertierung von 'class AbgeleiteteKlasse *' zu 'class BasisKlasse *' existiert bereits, aber es ist kein Zugriff darauf moeglich
C:\C++\TESTPROJEKTE\BasisklassenZeiger\Haupt.cpp(18) : error C2653: 'AbKlasse' : Keine Klasse oder Namespace
C:\C++\TESTPROJEKTE\BasisklassenZeiger\Haupt.cpp(18) : error C2065: 'i' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.

BasisklassenZeiger.exe - 3 Fehler, 0 Warnung(en)



Ich glaube das "AbKlasse irgendwie nicht richtig erzeugt wird, wenn ich nähmlich nach der Erzeugung "AbKlasse::" schreibe um auf die Attribute zugreifen zu können kommen von VC6 keine vorschläge...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DaN00b
JLI'ler



Anmeldedatum: 10.08.2002
Beiträge: 159

Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 16:44    Titel: Antworten mit Zitat

also habs mit einer alternative versucht weiß aber net obs dann noch so ist wies du willst *gg*

Code:
//Haupt.cpp
#include "Basisklasse.h"
#include "AbgeleiteteKlasse.h"

AbgeleiteteKlasse AbKlasse;
AbgeleiteteKlasse* pZeiger = &AbKlasse;

void Zugriff(AbgeleiteteKlasse* Zeiger)
{
   Zeiger->ChangeI(40);
}

void main(void)
{
   Zugriff(pZeiger);

   AbKlasse.TestZahl(40);
}

Code:
//Abgeleiteteklasse.h
#include <iostream.h>

#ifndef _ABGELEITETEKLASSE_H
#define _ABGELEITETEKLASSE_H

#include "Basisklasse.h"

class AbgeleiteteKlasse : BasisKlasse
{
public:

int b;
AbgeleiteteKlasse();
ChangeI(int changeto);
TestZahl(int Test);

};

#endif

Code:
//Abgeleiteteklasse.cpp
#include "Abgeleiteteklasse.h"

AbgeleiteteKlasse::AbgeleiteteKlasse()

    i = 20;
b = 30;
}

AbgeleiteteKlasse::ChangeI(int changeto)
{
i=changeto;
}

AbgeleiteteKlasse::TestZahl(int Test)
{
if(i = Test)
{
cout << "geht" << endl;
}
else
{
cout << "geht nicht" << endl;
}
}

Code:
//Basisklasse.h
#ifndef _BASISKLASSE_H
#define _BASISKLASSE_H

class BasisKlasse
{

public:

int i;
BasisKlasse();
};

#endif

Code:
//Basisklasse.cpp
#include "Basisklasse.h"

BasisKlasse::BasisKlasse()
{
   this->i=10;
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 18:47    Titel: Antworten mit Zitat

Na ja, das ist nicht ganz das, was ich wollte...
Ich bin nähmlich gerade dabei ein Inventar zu programmieren und schon zu ca. 98 % fertig. Aber ich will bei verschiedenen Funktionen auf verschiedene Werte der Items zugreifen. Ich hab für die Items ne Basisklasse geschrieben, die halt die Grundwerte der Items beinhaltet (Preis, Image,...). In den Funktionen will ich aber immer nur auf diese Grundwerte zugreifen. Deshalb will ich ihnen bei der Deklaration als Parameter einen Basisklassen-Zeiger übergeben, bei dem Aufruf aber einen Zeiger auf eine abgeleitete Klasse (zb. cArmor) übergeben. Wie oben schon gesagt, klappt das nich so.

Aber ich glaube der einzige Fehler besteht darin, das ich das Objekt der abgeleiteten Klasse (AbKlasse) falsch erzeuge. Leider hab ich gerade mein Buch in dem OOP sehr gut beschrieben ist nich da, und in JLI-Spieleprogrammierung find ich einfach die Stelle nich...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 19:35    Titel: Antworten mit Zitat

Meiner Meinung ist das einzige was du falsch machst die Ableitung. Du musst schreiben class AbgeleiteteKlasse : public (!!) BasisKlasse. DAs sollte die Probleme beseitigen.

Aber das mit dem AbKlasse::i wird immer noch ned funzen weil du dazu i zu einer Klassenvariable machen müsstest. Wie das geht weis ich jetzt nicht. Du kannst höchstens AbKlasse.i schreiben das müsste gehen
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 19:44    Titel: Antworten mit Zitat

Vielen Dank an alle, die mitgeholfen haben!
@ MichaelEs klappt jetzt, das mit der Ableiteung hab ich schon nach deinem ersten Rat gemacht, aber ich musste noch so zugreifen wie du gesagt hast (.i) und ich hab zudem vergessen die Destruktoren zu Definieren.
Danach hat alles geklappt.
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 -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
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