Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[c++] klasa i metody w osobnych plikach

Chmarusso 10 Paź 2010 15:57 1792 1
  • #1 10 Paź 2010 15:57
    Chmarusso
    Poziom 8  

    Witam! Mam pewien problem z umieszczeniem definicji klasy i jej metod w dwóch osobnych plikach i użyciem tej klasy w pliku main.

    Mam trzy pliki:
    macierz.h - definicja klasy + prototypy metod
    macierz.cpp - metody
    main.cpp - plik gdzie chcę użyć swojej klasy

    macierz.h:

    Code:

    #ifndef MACIERZ_H_
    #define MACIERZ_H_

    class Macierz
    {
       private:   
          int w, k;
       public:
          int **t;
          int i; //iterator
          int init(int wiersze, int kolumny);
          int zwolnij(void);
    };
    #endif


    macierz.cpp:
    Code:

    #include <iostream>
    #include <stdlib.h>
    #include "macierz.h"

    int Macierz::init(int wiersze, int kolumny) {
      w=wiersze;
      k=kolumny;
      t = new int *[w];
      for(i=0; i<w; i++) {
        t[i] = new int[k];
      }

    return 0;

    };

    int Macierz::zwolnij(void) {
     for(i=0; i<w; i++) {
       delete []t[i];
     }
     delete []t;    
    return 0;

    };


    i main.cpp:
    Code:

    #include <iostream>
    #include <stdlib.h>
    #include "macierz.h"

    using namespace std;

    int main()
    {
    Macierz obj;
    obj.init(6,3);
    obj.t[5][2] = 12;
    cout<<"Pozycja:"<<obj.t[5][2]<<"\n\n";
    obj.zwolnij();

    return 0;
    }


    Gdy wrzucam definicje metod do pliku macierz.h i kompiluje main.cpp to wszystko jest ok. Natomiast gdy definicje są osobno gcc wywala błąd. Może w zły sposób kompiluje ten plik? Przy komendzie g++ main.cpp dostaje błąd:
    Code:

    main.cpp:(.text+0x22): undefined reference to `Macierz::init(int, int)'
    main.cpp:(.text+0x7e): undefined reference to `Macierz::zwolnij()'
    collect2: ld returned 1 exit status


    W jaki sposób to skompilować tak by znajdywało mi te metody w tym pliku macierz.cpp?

    Pozdrawiam

    0 1
  • Pomocny post
    #2 10 Paź 2010 16:30
    lukagrom
    Poziom 15  

    Code:
    g++ -c macierz.cpp main.cpp 

    Code:
    g++ -o moj_program main.o macierz.o 

    Code:
    ./moj_program

    0