Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Template problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.06.2007, 17:15 Uhr
~lapuch
Gast


Hallo leute,

wie kann ich bei einer Template Funktion den typ abfangen ?!?

ich habe hier eine initialisierungsfunktion einer Matrixklasse die fuer reele und komplexe zahlen sein soll. jedoch wenn ich ein Komlexen datentyp in der Main anstatt "T" einsetzt wirft er mir logisch ein fehler raus, da der operator einer komplexen klasse =0 nicht defeniert ist! will ich folgendes machn wenn anstatt von T complex eingesetzt wird, will ich matrix[j][i]=z1; (z1 ist mit 0+0*j initialisiert) zuweisen sodass jedes element der komplexen zahl mit 0+0*j initialisiert wird.
Wenn anstatt von "T" double oder int eingesetzt wird matrix[j][i]=0 zugewiesen.

wie kann ich diese entscheidung abfangen ich habe es schon mit try/catch versuch jedoch ohne erfolg.()


C++:
template <typename T>
void cmatrix<T>::c_init() {
  int j = 0;
  int i = 0;
  complex z1;

  matrix = new T *[spalte_m1];

  for(j = 0; j < zeile_m1; j++)
    matrix[j] = new T[zeile_m1];

  for(j=0; j < zeile_m1; j++) {
    for(i=0; i < spalte_m1; i++) {    
      matrix[j][i]=0;     //  <== und hier muss ich dann        
    }
  }
}




Oder ihr habt da ein besseren vorschlag! wie z. B z1=0 in der komplexen klasse definieren, wenn ja würde ich gerne wissen wie das geht!

danke vorraus

Bearbeitung von 0xdeadbeef:

Mal lesbar eingerückt


Dieser Post wurde am 25.06.2007 um 22:43 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.06.2007, 18:06 Uhr
Blubber2063



Naja das sollte gehen wenn du eine implizite Konvertierung über einen Konstruktor machst, also z.B. Complex(double x) oder Complex(int x), dann dürfte er eigentlich keinen Fehler mehr schmeissen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.06.2007, 22:45 Uhr
0xdeadbeef
Gott
(Operator)


Über den Konstruktor wird das nichts, da sind die Objekte ja bereits initialisiert. Was du willst,ist den operator= überladen. Das sieht in etwa so aus:

C++:
class demo {
public:
  demo &operator=(double d);
private:
  double val_;
};

demo &demo::operator=(double d) { val_ = d; }

int main() {
  demo my_demo;

  my_demo = 12.3;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2007, 02:17 Uhr
~lapuch
Gast


2 Oxdeadbeef

ich danke dir es funktioniert !!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: