Template - Problem



  • Also ich hab die Funktion bisher noch gar nicht aufgerufen.
    Nur in der Header - Datei deklariert.
    Trotzdem kommen diese Fehlermeldungen.
    Hab ich irgendwas offensichtliches falsch gemacht???

    Gruß,
    Markus



  • Ok, Problem gelöst.

    Danke an Otze.
    Dein Code passt.

    Gruß,
    Markus



  • coldAsIce schrieb:

    Hab ich irgendwas offensichtliches falsch gemacht???

    'T ***feld_3D' als '***T feld_3D' geschrieben



  • Wegen deinen Fehlermeldungen habe ich es versucht, bei mir zu kompilieren.
    Es lief ohne Fehler durch und erfüllt auch seinen Zweck.

    #include <iostream>
    
    template <typename T>
    T*** create_array(int x, int y , int z)
    {
        T*** array = new T**[x];
        for(int i = 0; i < x; ++i)
        {
            array[i] = new T*[y];
            for(int j = 0; j < y; ++j)
                array[i][j] = new T[z];
        }
        return array;
    }
    
    int main()
    {
        int*** array = create_array<int>(4, 4, 4);
        array[1][2][3] = 5;
        std::cout << array[1][2][3];
    }
    

    Edit: Hat sich ja nun erledigt 🙄



  • Na ja,
    manchmal seh ich halt den Wald vor lauter Sternchen nicht! *g*
    Finde es toll wie schnell man hier Hilfe bekommt.

    Gruß an Alle.



  • Wo das aber alles so schnell ging, hab ich noch ne Frage.
    Und zwar möchte ich einen LIFO Stack haben, der dynamisch
    erweitert wird (ohne dass zu Beginn eine Größe festgelegt werden muß).
    In dem Stack möchte ich einen eigenen Datentyp ablegen.
    Man könnte das ja auch generisch mit Templates machen.
    Hab auch einige Beispiele gefunden, nur sie sind alle
    statisch und ich versteh sie auch teilweise net so richtig.
    Kann mir hier auch jemand helfen?

    Vielen Dank im Voraus,
    Markus



  • coldAsIce schrieb:

    Wo das aber alles so schnell ging, hab ich noch ne Frage.
    Und zwar möchte ich einen LIFO Stack haben, der dynamisch
    erweitert wird (ohne dass zu Beginn eine Größe festgelegt werden muß).
    In dem Stack möchte ich einen eigenen Datentyp ablegen.
    Man könnte das ja auch generisch mit Templates machen.
    Hab auch einige Beispiele gefunden, nur sie sind alle
    statisch und ich versteh sie auch teilweise net so richtig.
    Kann mir hier auch jemand helfen?

    Vielen Dank im Voraus,
    Markus

    Nehme doch einfach std::stack 🙂



  • du wirst nicht um die generische version rumkommen(solange du alle datentpen nicht von einer base ableiten willst), c++ hat nunmal ein statisches typsystem

    //edit schau mal in der stl den stack an 🙂



  • Hallo,

    also das mit dem STL Stack hab ich auch schon ausprobiert.
    Bekomme hier auch Fehlermeldungen.
    Vielleicht könnt ihr mir hier ja auch helfen.

    Also folgendermaßen siehts aus:

    Ich habe eine Klasse Voxel von der ich Objekte auf den Stack legen will.

    class Voxel{

    private:
    int u,v,w;
    int value;

    public:
    Voxel(int u, int v, int w, int val);
    Voxel();
    ~Voxel();
    int getWert();
    int getU();
    int getV();
    int getW();

    };

    Die Fehlermeldungen kommen kommen, wenn ich den Stack anlegen will:
    stack <Voxel> voxels;

    C:\Eigene Dateien\Markus\c++\Diplom\source.cpp(34) : error C2065: 'stack' : nichtdeklarierter Bezeichner
    C:\Eigene Dateien\Markus\c++\Diplom\source.cpp(34) : error C2275: 'Voxel' : Ungueltige Verwendung dieses Typs als Ausdruck
    C:\Eigene Dateien\Markus\c++\Diplom\source.cpp(34) : error C2065: 'voxels' : nichtdeklarierter Bezeichner

    Vielleicht könnt ihr mir hier auch weiterhelfen.

    Gruß,
    Markus



  • haste ein using namespace std; davor stehen?

    achja, benutz demnächste

    tags, das macht die sache lesbarer 🙂



  • Vielleicht hast du auch ein

    #include <stack>
    

    vergessen..



  • LOL,

    dankeschön.
    Ich komm mir hier schon total bedeppert vor.
    Natürlich hat der namespace gefehlt.
    Habs selbst gemerkt.

    Vielen Dank nochmal!!!


Anmelden zum Antworten