Undefined reference einschließlich header in C++
War ich arbeiten, mein Projekt, während ich beschlossen, dass ich es aufgeteilt in Dateien. Allerdings habe ich dass problem, wie dieses hier, und alle Ratschläge, die ich über google gefunden wurden, dem vergessen zu verlinken die beiden Objekt-Dateien, die ich bin, es richtig zu machen (zumindest denke ich so).
Makefile:
test : class.o main.o
g++ class.o main.o -o test.exe
main.o : main.cpp
g++ main.cpp -c
class.o : class.cpp
g++ class.cpp -c
main.cpp
#include <iostream>
#include "class.h"
using namespace std;
int main() {
Trida * t = new Trida(4);
t->fce();
return 0;
}
Klasse.h
#ifndef CLASS
#define CLASS
class Trida {
private:
int a;
public:
Trida(int n);
void fce();
};
#endif
class.cpp
#include <iostream>
using namespace std;
class Trida {
private:
int a;
public:
Trida(int n) {
this->a = n;
}
void fce() {
cout << this->a << endl;
}
};
Fehlermeldung:
gwynbleidd@gwynbleidd-pc:~/Skola/test$ make
g++ class.cpp -c
g++ main.cpp -c
g++ class.o main.o -o test.exe
main.o: In function `main':
main.cpp:(.text+0x26): undefined reference to `Trida::Trida(int)'
main.cpp:(.text+0x54): undefined reference to `Trida::fce()'
collect2: ld returned 1 exit status
make: *** [test] Error 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, hier ist, was Sie falsch gemacht haben. In class.cpp Sie erstellen eine neue Trida Klasse statt implementieren, die Sie erstellt haben, in der Klasse.h. Ihre class.cpp sollte Aussehen wie dieses:
Und wirklich, Sie sollten mit der Initialisierung statt Zuweisung im Konstruktor:
Definieren Sie Klasse
trida
zwei mal (in der header-Dateiclass.h
und in der Quell-Dateiclass.cpp
)Ihre class.cpp die Datei sollte wie