Anzeige:
Ergebnis 1 bis 3 von 3

Thema: [c++] linken - undefined reference zur Methode im Destructor

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    waldy
    Gast

    [c++] linken - undefined reference zur Methode im Destructor

    Hallo,

    ich sitzte schon seit Tagen an diesem Linking Problem und hab auch schon ausgiebig die Suchfunktion des Forums benutzt aber komme trotzdem nicht auf eine Loesung.

    Problem:

    Code:
    /tmp/ccKrBmkN.o: In function `TMatrix<double>::~TMatrix()':
    main.cpp:(.text._ZN7TMatrixI7adoubleED1Ev[TMatrix<double>::~TMatrix()]+0x1e): undefined reference to `TMatrix<double>::DelMatrix()'
    collect2: ld returned 1 exit status
    Das eigentliche Programm ist recht gross, daher hab ich mir ein Modell gebastelt, das nur den noetigsten Code enthaelt und den Fehler produziert.
    Laut dem Forum koennte ich in die "matrix.h" Datei die Zeile "#include "matrix.cpp" " einfuegen und damit loest sich das Problem tatsaechlich, allerdings nicht im eigentlichen Programm.

    Ich bin hier ueber Hinweise gestossen, dass es ein haeufiges Problem ist, aber keine Loesung dafuer.

    Ich kompiliere mit:
    Code:
     
    g++  matrix.cpp main.cpp
    Offenbar fehtl da irgendwas wogegen ich linken muss.


    Hier der Modellcode.

    Code:
    //matrix.h
    #ifndef MATRIX_H
    #define MATRIX_H
    
    #include <stdlib.h>
    #include <stdio.h>
    
    template<class T> class TMatrix 
    {
    
    public:
      int  cols, rows;  
      int  ElementSize; 
      T    **p;         
      int  SleepFlag;
      
      TMatrix(){
        cols=0;
        rows=0;
        p   =0; 
        SleepFlag=0;
        ElementSize = sizeof(T);
      };  
    
      ~TMatrix(){ 
        if (p!=0){ 
         DelMatrix();
        } 
       };
    
      void DelMatrix();
      void DelMat(){ DelMatrix(); };
    };
    
    #endif 
    
    
    //matrix.cpp 
    
    #ifndef MATRIX_CPP
    #define MATRIX_CPP
    
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #include "matrix.h"
    
    template<class T>
    void TMatrix<T>::DelMatrix()
    { 
      if (p!=0){
        delete[] p[0];
        delete[] p;
      };
      rows=0;
      cols=0;
      p   =0;
      SleepFlag=0;
    };
    
    #endif
    
    //main.cpp
    #include "matrix.h"
    
    int main(){
    
     TMatrix<double> tm;
      
    
    return 0;
    }

    Ich hoffe jemand hat einen kleinen Hinweis fuer mich, was man da machen koennte.

    Danke.
    Gruss,
    waldy
    Geändert von waldy (16-05-2010 um 09:10 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •