elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Classes em Ficheiros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Classes em Ficheiros  (Leído 2,228 veces)
ber0x88

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Classes em Ficheiros
« en: 16 Abril 2016, 19:31 pm »

Boa tarde,
Peço desculpa falar em português mas espero que percebam.  :-X
Segue o seguinte código:

test.cpp
Código
  1. #include "MyClass.h"
  2. #include "MyClass.cpp"
  3. #include <iostream>
  4.  
  5. int main(){
  6.    MyClass a;
  7. }

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
  1. #ifndef MYCLASS_H
  2. #define MYCLASS_H
  3.  
  4.  
  5. class MyClass
  6. {
  7.    public:
  8.        MyClass();
  9.        ~MyClass();
  10.    protected:
  11.    private:
  12. };
  13.  
  14. #endif // MYCLASS_H
  15.  
  16.  

MyClass.cpp função do construtor e destrutor
Código
  1. #include "MyClass.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5.  
  6. MyClass::MyClass()
  7. {
  8.    cout << "constr" << endl;
  9. }
  10.  
  11. MyClass::~MyClass()
  12. {
  13.    cout << "Dest" << endl;
  14. }
  15.  


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 :P


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Classes em Ficheiros
« Respuesta #1 en: 16 Abril 2016, 20:21 pm »

Código
  1. #include "MyClass.h"
  2. #include "MyClass.cpp"

Solo haz include del .h.

Los .cpp se compilan a parte.

¿Tienes un proyecto o compilas cada archivo por separado?

La compilación en este caso, va así:
Código:
test.cpp -> test.o
MyClass.cpp -> MyClass.o
test.o + MyClass.o -> test.exe

"Undefined reference" significa que no encuentra la clase en los ".o". Lo más probable es que estés haciendo:
Código:
test.o -> test.exe :: Error: falta MyClass

No sé como compilas, ni que IDE o editor usas, así que no puedo decir más.


En línea

ber0x88

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Classes em Ficheiros
« Respuesta #2 en: 17 Abril 2016, 00:37 am »

Uso Codeblocks em linux com g++ 4.8.4.
Tentei novamente com novo projeto e continua o mesmo erro.  :-\
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Classes em Ficheiros
« Respuesta #3 en: 17 Abril 2016, 01:01 am »

Están los 3 archivos metidos en el proyecto? Debería compilar bien
En línea

ber0x88

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Classes em Ficheiros
« Respuesta #4 en: 17 Abril 2016, 01:08 am »

Já está a funcionar.  :P Apenas fechei o IDE e o projeto, voltei a abrir projeto recente e funcionou  :xD
« Última modificación: 17 Abril 2016, 01:15 am por ber0x88 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Classes em Ficheiros
« Respuesta #5 en: 17 Abril 2016, 01:12 am »

Puedes darle a compilar, y mostrar lo que salga en la pestaña "Build log"?
En línea

ber0x88

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Classes em Ficheiros
« Respuesta #6 en: 17 Abril 2016, 01:31 am »

Fiz: File > new project > console application.
Depois já com o projeto aberto:
File > new > Class.

The new class has been created.
Do you want to add it to the current project?  > Yes

continuava a dar o erro:
/home/joao/Documents/workspace/testing/main.cpp|7|undefined reference to `MyClass::MyClass()'|

fechei o Codeblocks. Abri novamente em recent projects,  F9 (Run) e funcionou sem erros...
Será problema do IDE?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Classes em Ficheiros
« Respuesta #7 en: 17 Abril 2016, 01:42 am »

Tal vez no se hubiera guardado el proyecto, es lo que se me ocurre. Si te vuelve a pasar, dale click derecho sobre el proyecto y "Guardar proyecto", para ver si es eso.
En línea

ber0x88

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Classes em Ficheiros
« Respuesta #8 en: 17 Abril 2016, 01:57 am »

Criei o projeto de novo.
Save all files, project, workspace, everything -> undefined reference to `MyClass::MyClass()'|

Fecho e volto a abrir em recent projects e funciona...  :laugh:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Classes de PHP
PHP
DownRate 2 1,700 Último mensaje 29 Octubre 2006, 00:01 am
por DownRate
VFP con classes encriptadas con MD5
Ingeniería Inversa
Kraker 3 3,548 Último mensaje 18 Junio 2008, 20:07 pm
por Kraker
[SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
.NET (C#, VB.NET, ASP)
Eleкtro 4 2,948 Último mensaje 27 Junio 2015, 21:40 pm
por Eleкtro
Classes...
Dudas Generales
UnaiiM 2 1,479 Último mensaje 18 Junio 2019, 08:16 am
por UnaiiM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines