Peço desculpa falar em português mas espero que percebam.
Segue o seguinte código:
test.cpp
Código
#include "MyClass.h" #include "MyClass.cpp" #include <iostream> int main(){ MyClass a; }
Cria o objecto "a" referente há classe MyClass.
Output:
Constr
Dest
MyClass.h onde está declarado a função do construtor e destrutor
Código
#ifndef MYCLASS_H #define MYCLASS_H class MyClass { public: MyClass(); ~MyClass(); protected: private: }; #endif // MYCLASS_H
MyClass.cpp função do construtor e destrutor
Código
#include "MyClass.h" #include <iostream> using namespace std; MyClass::MyClass() { cout << "constr" << endl; } MyClass::~MyClass() { cout << "Dest" << endl; }
Tenho declarado MyClass.cpp em test.cpp e só assim é que funciona. Caso comente a linha que faz " #include "MyClass.cpp" " e fique apenas incluído o MyClass.h ocorre o seguinte erro:
/home/user/Documents/workspace/test.o||In function `main':|
test.cpp|| undefined reference to `MyClass::MyClass()'|
test.cpp|| undefined reference to `MyClass::~MyClass()'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Caso inclua só o MyClass.cpp o programa também executa sem erros.
Não deberia executar normalmente só incluindo o Header?
Desde já obrigado