Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Template Class

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
14.05.2010, 16:10 Uhr
Moritz1243



Hi,

ich habe mal ne frage zu einer template class. Wo ist der Unterschied zwischen add und add2? Kann man die Template Class noch sinnvoller nutzen?

Danke


C++:
#include <iostream>
#include <vector>
#include <windows.h>

using namespace std;

template<class T>
class ClassVector
{
    public:

        T x,y,z;

        ClassVector() {x = 0; y = 0; z = 0;}

        ClassVector<T>& add(T wert)
        {
            x += wert;
            y += wert;
            z += wert;

            return *this;
        }
        void add2(T wert)
        {
            x += wert;
            y += wert;
            z += wert;
        }
};


int main()
{
    ClassVector<double> vec1;
    ClassVector<double> vec2;

    vec1.add(4);
    vec2.add2(4);

    printf("%f, %f, %f\n", vec1.x, vec1.y, vec1.z);
    printf("%f, %f, %f\n", vec2.x, vec2.y, vec2.z);

    Sleep(5000);

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.05.2010, 16:29 Uhr
0xdeadbeef
Gott
(Operator)


Zunächst mal handelt es sich hier nicht um eine "template class" (Vorlagenklasse), sondern um eine "class template" (Klassenvorlage).

Ansonsten ist der Unterschied zwischen add und add2 in deinem Beispiel der Rückgabewert. add erlaubt dir beispielsweise, folgendes zu machen:

C++:
int x = vec1.add(2).add(3).add(4).add(5).x;


...wobei das in diesem speziellen Fall eher mäßig guter Stil ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.05.2010 um 16:29 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.05.2010, 16:35 Uhr
Moritz1243



sonst bringt das aber keine vorteile/nachteile?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.05.2010, 20:08 Uhr
~f.-th.
Gast


Geht dat auch statt des printf:

C++:
    cout << fixed << vec1.x << "," << vec1.y << "," << vec1.z;
    cout << endl;
    cout << vec2.x << "," << vec2.y << "," << vec2.z;
    cout << endl;



?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.05.2010, 22:43 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von Moritz1243:
sonst bringt das aber keine vorteile/nachteile?

Naja, es ist ein Rückgabewert. Es funktioniert wie jeder andere Rückgabewert. Wenn du einen brauchst/willst, gib ihn zurück, sonst lass es halt - das hat mit templates eigentlich wenig zu tun.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: