[C++] Listy typu klasa

0

Przepraszam ;( Ostatnio pomyliłem guziczki :D

Mam takie małe question.

Tworzę sobie pewną klasę Macierz:

macierz.h

#include <iostream>
#include <list>
#include <string>

using namespace std;

class Macierz{
public:
Macierz(string strNazwa, int iWierszy, int iKolumn);
~Macierz();
void Wyswietl();

protected:
string strNazwa;
int iKolumn, iWierszy;
};

main.cpp</B>

#include macierz.h

int main(){
list<Macierz> Zbior;
}
</i>

g++zgłasza mi taki błąd:

/home/grisha/tmp/ccpHuOEo.o: In function `__gnu_cxx::new_allocator<Macierz>::destroy(Macierz*)':
main.cpp:(.gnu.linkonce.t._ZN9__gnu_cxx13new_allocatorI7MacierzE7destroyEPS1_[__gnu_cxx::new_allocator<Macierz>::destroy(Macierz*)]+0xd): undefined reference to `Macierz::~Macierz()'
collect2: ld returned 1 exit status

Oczywiście w osobnym pliku podłączonym do nagłówkowego mam definicje. W tym destruktora...
Co się dzieje?

0

może nie masz tego pliku dołączonego do projektu
jak to kompilujesz? skompiluj tak:
g++ main.cpp macierz.cpp
no i tego tam... zrób sobie konstruktor domyślny, bo później mogą ci się zonki pojawić, to nic nie kosztuje. Możesz to zrobić chociażby tak:

Macierz(string strNazwa="", int iWierszy=0, int iKolumn=0);
0

przedtem kompilowałem tak:

g++ main.cpp -o MATRIX

i wysakiwał ten błąd, po zastosowaniu Twojej mateody

g++ main.cpp macierz.cpp macierz.h -o MATRIX

skompilowało się bez problemu

psikus mam taki:
macierz.cpp ma #include "macierz.h"

dlaczego to nie chce się skompilować przez samo macierz.cpp?
projektu nie twożyłem żadnego, operuję tylko na .cpp

0

żatujesz, coś takiego idzie:
g++ main.cpp macierz.cpp macierz.h -o MATRIX
a coś takiego nie?
g++ main.cpp macierz.cpp -o MATRIX
lol, jeśli masz taki zonk, to ja nie wiem, co się dzieje ;)

a jeśli przez samo macierz.cpp rozumiesz:
g++ macierz.cpp -o MATRIX
to nie pójdzie z powodów oczywistych - brak funkcji main.

btw:
kompiluj tak, jak ci kompilator pozwala. W końcu jeśli komuś dajesz źródło w kilku plikach, to i tak dołączasz skrypt makefile, w którym możesz wywołać g++ tak, jak ci się podoba ;)

0

Aff chodziło mi o main.cpp :D Pomyliłem się :)

Anyway thanks :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1