templates und pointer



  • hallo, ich hab da eine frage:

    volgendes programm:

    #include <iostream>
    #include <cstdlib>
    
    template <class T>
    class blub
    {
    	private:
    		T bluber;
    	public:
    		blub(T bluber);
    		T getBluber();
    		void setBluber(T Bluber);
    };
    
    template <class T>
    blub<T>::blub(T bluber)
    {
    	this->bluber = bluber;
    }
    template <class T>
    T blub<T>::getBluber()
    {
    	return bluber;
    }
    template <class T>
    void blub<T>::setBluber(T bluber)
    {
    	this->bluber = bluber;
    }
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    	cout << "Hello, world!" << endl;
    
    	blub<int>* my_bluber;
    	my_bluber = new blub<int>(5);
    
    	cout << blub->getBluber<int>() << endl;   //// hier komme ich nicht weiter..
    	blub->setBluber(4);
    	cout << <int>blub->getBluber() << endl;
    
    	return EXIT_SUCCESS;
    }
    

    im main() teil weiß ich nicht, wie ich auf blub zugreifen soll..
    bisher hab ich immer einen kompiler error bekommen, egal was ich probiert hab..
    der kompiler ist der gcc, ka ob diese info notwendig ist..

    koennt ihr mir bitte helfen?
    danke..

    mfg aMan..



  • das

    blub->getBluber<int>()
    

    zu

    blub->getBluber()
    


  • wie wäre es wenn du das objekt aufrufst nicht die klasse 😉

    my_bluber->getBluber()
    


  • ups, scheibe, darauf haette ich selber kommen koennen.. *rotwerd*

    thx..

    mfg aMan..



  • ein weiteres problem:

    test3.cpp

    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include <iostream>
    #include <cstdlib>
    
    #include "mylistelement.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    	cout << "Hello, world!" << endl;
    
    	MyListElement<int>* g;
    	g = new MyListElement<int>(5);
    
    	delete g;
    
    	return EXIT_SUCCESS;
    }
    

    mylistelement.h

    #ifndef MYLISTELEMENT_H
    #define MYLISTELEMENT_H
    
    template <class T>
    class MyListElement
    {
    	public:
    		MyListElement(T el);
    		~MyListElement();
    
    		MyListElement<T>* next;
    		MyListElement<T>* prev;
    		T element;
    };
    
    #endif
    

    und mylistelement.cpp

    #include <cstdlib>
    
    template <class T>
    MyListElement<T>::MyListElement(T el) // hier ist ein fehler
    {
    	element=el;
    	next = NULL;
    	prev = NULL;
    }
    
    template <class T>
    MyListElement<T>::~MyListElement() // und hier der zweite
    {
    	delete next;
    }
    

    compileroutput:

    /home/pfad/test3/src/mylistelement.cpp:5: error: expected constructor, destructor, or type conversion before '<' token
    /home/pfad/test3/src/mylistelement.cpp:13: error: expected constructor, destructor, or type conversion before '<' to

    ich hab jetzt sicher schon paar stunden den fehler gesucht, den code verschlankt, immer wieder was rausgehauen..
    aber ich kann den verdammten fisch nicht finden (wahrscheinlich hab ich den code schon zu oft gesehen..)
    bin schon ganz depremiert..

    ich hoffe, ihr koennt mir helfen..

    mfg aman..



  • Da gibts schon viele viele Beiträge. ( Suche verwenden ).
    Du kannst die implementation einer Templateklasse nicht so ohne weiteres in eine eigene .cpp datei schreiben (am einfachsren ists du schreibst sie gleich in den header).
    Kurt



  • thx..
    auf sowas waer ich nie gekommen..

    in meinem cpp tut steht das auch nirgends..

    danke noch mal..


Anmelden zum Antworten