mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: So 28.04.2024 07:07 Benutzername: Passwort: Auto-Login

Thema: [C++] - (STL) Templates bei Vererbung vom 04.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [C++] - (STL) Templates bei Vererbung
Autor Nachricht
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Mo 04.06.2007 17:31
Titel

[C++] - (STL) Templates bei Vererbung

Antworten mit Zitat Zum Seitenanfang

Weiss jemand inwiefern ich bei Vererbung der Klassen Templates benutzen kann?

Reicht es aus, wenn ich zum Beispiel eine Vererbte Unterklasse Namens UKlasse habe, dieser ein Template zuweise

Code:

template<class T>
class UKlasse
{
...
};

template <class T>
UKlasse<T>::UKlasse()
{
...
}


in der main Funktion mit

Code:

main()
{
UKlasse<T> Objekt("Parameter 1",1234);
}


ein neues Objekt erzeuge?

Die Oberklasse jedoch ist wie gewohnt eine normale Klasse ohne Templates.

Der Compiler sagt dass das Symbol T undefiniert sei!?
Habs auf dem Borland Builder und Dev-C++ Compiler probiert.
Beides dasselbe Ergebnis *Schnief*

Habe ein komplexes Programm,
dessen Code eher noch mehr Verwirrung hervorrufen würde *bäh*

Das Programm läuft in seinem Ur-Zustand ohne Probleme.
Nur will ich nun mit STL-Templates arbeiten.

Jemand eine Ahnung?

Danke
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mo 04.06.2007 22:57
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Habs auf dem Borland Builder und Dev-C++ Compiler probiert.

Borland Builder kenne ich nicht und Dev-C++ ist kein Compiler, sondern eine IDE.
Du kannst da verschiedene Compiler einbinden.
Ich würde empfehlen, mit dem GCC zu arbeiten. Das Ding ist ein guter Compiler, hält sich an Standards und ist für so gut wie jede Plattform erhältlich.

Ich würde die außerdem vielleicht einen Umstieg der IDE ans Herz legen.
Schau dir mal Code::Blocks an. Das ist eine IDE, die Dev-C++ sehr ähnlich sieht.
Allerdings handelt es sich hierbei nicht nur um eine Freeware, sondern um ein OpenSource-Projekt.
Das Ding läuft außerdem auch noch auf anderen Plattformen (zumindest auf Linux) und nicht nur auf Windows.

Ansonsten wäre auch Eclipse mit CDT-Plugin sehr zu empfehlen.

Aber zu deinem Problem:
Ich weiß nicht so ganz, was du mit Ober- und Unterklasse meinst?
Vererbung? Ableitung?

Kannst du nicht mal deinen vollständigen Code posten oder irgendwo hochladen?
Dann kann man mal einen Blick drauf werfen.

Wie lautet denn eigentlich die genaue Fehlermeldung, die dein Compiler ausgibt?
Und wenn er eine Zeilennummer mit ausspuckt, dann poste auch mal diese Zeile.

Zitat:
in der main Funktion mit

Funktion? Du meinst wohl eher Methode, oder?
Genaugenommen hat diese Methode außerdem einen Rückgabewert und erwartet eventuell noch Parameter.
Der C++-Standard schreibt den Rückgabewert (int) zwingend vor.
Zitat:
An implementation shall not predefine the main function. This func-
tion shall not be overloaded. It shall have a return type of type
int, but otherwise its type is implementation-defined. All implemen-
tations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

Je nach verwendetem Compiler und dessen Einstellungen, müßte es dort bereits schon einen Fehler geben.

Das hier kannst du einsetzen:
int main( int argc, char *argv[] );
int main( void );


Ein C-Compiler müßte es vermutlich durchgehen lassen, wenn du das "int" vor "main" wegläßt.
(Ich bin nicht mehr ganz sicher, aber ich glaube, in C wäre das Weglassen OK. Den Rückgabewert hingegen als void zu definieren, wäre wohl nicht OK, auch wenn dir das einige Compiler (je nach Einstellung) durchgehen lassen.)
Ein C++-Compiler dürfte das Weglassen von "int" - sofern er sich an den Standard hält - aber in keinem Fall zulassen.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Di 05.06.2007 03:57
Titel

Antworten mit Zitat Zum Seitenanfang

hey, danke erstmal für deinen vortrag über c++ Grins
ich programmiere schon eine ganze weile, aber eben nur sehr selten.

den code zu kopieren wäre schwachsinn weil es zu viele dateien sind und zu viele klassen.
ist ein fach komplex.
bei meinem ersten post habe ich doch ein tolles beispiel:
die fehlermeldung lautet einfach dass UKlasse<T> nicht definiert ist
der Cursor geht in die Main "Methode" auf die Zeile wo UKlasse<T> aufgerufen wird!

Meine Frage:
Kann es überhaupt funktionieren?
Denn ich habe wie schon gesagt die Oberklasse und einige andere vererbte Klassen noch nicht mit template ausgestattet.
nur eine vererbte klasse ist als template und in der main wird die klasse nicht erkannt!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Mi 06.06.2007 23:35
Titel

Antworten mit Zitat Zum Seitenanfang

Wenn ich dich richtig verstehe, hast du eine Template-Klasse, die von einer Nicht-Template Oberklasse erben soll?! Das duerfte eigentlich kein Problem sein.
Code:
class OKlasse {
  public:
    OKlasse() {}
};

template< class T > class UKlasse : OKlasse {
    T val;
  public:
    UKlasse( T v ) { val = v; }
};

main() {
  UKlasse< std::string > s( "123" );
  UKlasse< int > i( 123 );
}
  View user's profile Private Nachricht senden
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Di 12.06.2007 22:24
Titel

Antworten mit Zitat Zum Seitenanfang

hat sich alles schon erledigt!
ich hab mich vertan, das alles hat mit der vererbten klasse garnichts zu tun!
also alles wie gewohnt angewandt, klasse->template:fertig! Lächel

trotzdem danke
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen CSS und vererbung von styles
OOP in PHP5, Vererbung?
hä? css html hilfe <img> ohne <a> vererbung
wer kann helfen zu Klassen,Vererbung usw. in PHP
vb3 templates
PHP & Templates
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.