Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » problem beim kompillieren meiner klasse

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
27.07.2005, 15:59 Uhr
~obladi
Gast


ja ich habe hier diese kleine klasse und bekomme beim kompillieren diesen fehler:

Code:
matrix.cpp:5: error: expected constructor, destructor, or type conversion before '<' token
matrix.cpp:5: error: expected `;' before '<' token
matrix.cpp:12: error: expected constructor, destructor, or type conversion before '<' token
matrix.cpp:12: error: expected `;' before '<' token
matrix.cpp:22: error: expected constructor, destructor, or type conversion before '<' token
matrix.cpp:22: error: expected `;' before '<' token
matrix.cpp:30: error: expected init-declarator before '<' token
matrix.cpp:30: error: expected `;' before '<' token
matrix.cpp:37: error: expected init-declarator before '<' token
matrix.cpp:37: error: expected `;' before '<' token




C++:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>
#include "matrix.h"

using namespace std;

int main(int argc, char *argv[])
{
  int a[] = {1,2,3,4,5,6,7,8,9,8,7,6,5,4,3};

  matrix<int> mat(15);
  mat.setze_in_matrix(a, 15);
  mat.ausgabe_matrix();

  return EXIT_SUCCESS;
}





C++:
#ifndef matrix_klasse
#define matrix_klasse

#include <iostream>
#include <cstdlib>

using namespace std;

template <class T>
class matrix
{
    public:
        matrix(unsigned int z); //eine dimension
        matrix(unsigned int z, unsigned int s);  //zwei dimemsionen
        //matrix(int, int, int);  //noch nicht
        ~matrix();

        void ausgabe_matrix();

        void setze_in_matrix(T *feld); //schiebt hinten rein(matrix)
        void setze_in_matrix(T *feld, int pos_z);  //für eindim array
        void setze_in_matrix(T *feld, int pos_z, int pos_s); //für zweidim matrix

        void fuege_array_ein(T *array);
        
    private:
        T *matrix_eindim;
        T **matrix_zweidim;
        //T ***matrix_dreidim;

        unsigned int zeilen_matr;
        unsigned int spalten_matr;

        unsigned int index_z_eindim;  //damit verwechlungen ausgeschlossen sind
        unsigned int index_z_zweidim;
        unsigned int index_s_zweidim;
};
#include "matrix.cpp"

#endif





C++:
#include <iostream>
#include <cstdlib>

template <class T>
matrix<T>::matrix(unsigned int zeilen)
{
    matrix_eindim = new T[zeilen];
    zeilen_matr = zeilen;
}

template <class T>
matrix<T>::matrix(unsigned int zeilen, unsigned int spalten)
{
    matrix_zweidim = new T*[zeilen];
    for(int i=0; i < zeilen; i++)
        matrix_zweidim[i] = new T[spalten];
    zeilen_matr = zeilen;
    spalten_matr = spalten;
}

template <class T>
matrix<T>::~matrix()
{
    delete [] matrix_eindim;
    delete [] matrix_zweidim;
    //delete matrix_dreidim;
}

template <class T>
void matrix<T>::ausgabe_matrix()
{
    for(int i = 0; i < zeilen_matr; i++)
        cout<< "Position " << i << ": " << matrix_eindim[i] << endl;
}

template <class T>
void matrix<T>::setze_in_matrix(T *feld)
{
    int feld_zeilen = sizeof(feld) / sizeof(feld[0]);
    for(; index_z_eindim < feld_zeilen; index_z_eindim++)
        matrix_eindim[index_z_eindim] = feld[index_z_eindim];
}



falls zufäälig jemand weiß wie ich den fehler weg bekomme... wär ich sehr dankbar. ich bin noch anfänger, darum etwas nachsicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.07.2005, 18:31 Uhr
~obladi
Gast


ich hab noch ein paar kleinigkeiten gefunden, wie in der main, und von den logischen sachen her...
findet niemand einen fehler, oder hab ich was falsch gemacht?
es ist nur so, das ist meine erste template-klasse und nichts funktioniert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.07.2005, 18:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


cpp's mit include einbinden ist immer ganz ungünstig, wahrscheinlich bindet er sie doppelt ein
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.07.2005, 19:54 Uhr
~obladi
Gast


komm schon ich bin wirklich am verzweifeln, man sieht doch, dass ich den vollständigen code gepostet habe. (weiter hab ich eben noch nicht implementiert)
ich hab doch includeguards und eine doppelt eingebundene matrix.cpp seh ich dort nicht. außerdem hatten includeguards in der *.cpp, den selben fehler nach sich gezogen.
ich kann keinen fehler finden! ist hier denn niemand der richtig ahnung hat und das lösen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.07.2005, 20:28 Uhr
Tommix



Hallo,
der Versuch matrix.cpp zu übersetzen schlägt fehl, da der Header matrix.h nicht eingebunden ist. Machst Du das aber, ist matrix.cpp quasi rekursiv in sich selbst eingebunde, was auch nicht geht. Am besten Du verschiebst den Inhalt von Matrix.cpp direkt in den Header. Sind zwar noch ein paar kleinere Fehler drin, aber der erwähnte ist dann weg.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.07.2005, 21:02 Uhr
~obladi
Gast


ich gebs auch auf den scheiß code auf 2 dateien zu verteilen, dein vorschlag klappt! danke!
hast du vielleicht noch ne idee mit der zeigerübergabe


C++:
void matrix<T>::setze_in_matrix(int *feld, unsigned int feld_zeilen)
{
    for(; index_z_eindim < feld_zeilen; index_z_eindim++)
        matrix_eindim[index_z_eindim] = feld[index_z_eindim];
}



ich wollte erst mit dem bewerten sizeof(feld) / sizeof.... die größe erhalten, leider klappt das nicht (wäre sonst zu einfach). so muss ich eben die größe mit übergeben...
weißt du ne andere lösung?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.07.2005, 22:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jo lass die größe übergeben, ist sinnvoller, msize klappt nur wenn du malloc/realloc und free nutzt (und ich glaub auch nur unter VC).
--
class God : public ChuckNorris { };
 
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: