Implementação de classe em arquivo separado
E aew povo,
É o seguinte, to com problemas na implementação de classes em C++, não sei o que estou fazendo errado, eu crio um arquivo ´header´ de extensão h, onde defino toda a classe, e a implementação da classe, eu coloco em um arquivo de mesmo nome, porém com extensão cpp... o problema é quando uso o header que eu criei, ele fala que não acha a implementação dos metodos da classe... Será que estou fazendo algo errado??
exemplo:
class1.h
class1.cpp
e tento compilar(estou usando o DEV-CPP):
main.cpp
Feito isso, consigo a mensagem:
É o seguinte, to com problemas na implementação de classes em C++, não sei o que estou fazendo errado, eu crio um arquivo ´header´ de extensão h, onde defino toda a classe, e a implementação da classe, eu coloco em um arquivo de mesmo nome, porém com extensão cpp... o problema é quando uso o header que eu criei, ele fala que não acha a implementação dos metodos da classe... Será que estou fazendo algo errado??
exemplo:
class1.h
#ifndef CLASS1_H define CLASS1_H class class1 { private: int Membro1; public: class1(int Value); void SetMembro1(int Value); }; endif
class1.cpp
include "class1.h" class1::class1(int Value) { SetMembro(Value); } void class1::SetMembro(int Value) { Membro1 = Value; }
e tento compilar(estou usando o DEV-CPP):
main.cpp
#include "class1.h" int main(int argc, char *argv[]) { class1 *c = new class1(10); return 0; }
Feito isso, consigo a mensagem:
[Linker error] main.cpp: undefined reference to ´class1::class1(int)´
Keitarosan
Curtidas 0
Respostas
Massuda
07/03/2006
O que está acontecendo é que seu projeto não está incluindo o arquivo .CPP com a implementação da classe. Isso depende do compilador utilizado, mas o que você precisa fazer é incluir o arquivo .CPP na lista de arquivos que fazem parte do projeto.
GOSTEI 0
Keitarosan
07/03/2006
Era exatamente isso :oops:
Funfou legal agora, valew mesmo camarada!
Isso é uma particularidade do compilador que o DevCPP utiliza?? ou tanto faz utilizar qualquer outro compilador como o do Borland C++ Builder ou do Visual C++? Sempre vou ter que dizer onde está a implementação da classe?
Funfou legal agora, valew mesmo camarada!
Isso é uma particularidade do compilador que o DevCPP utiliza?? ou tanto faz utilizar qualquer outro compilador como o do Borland C++ Builder ou do Visual C++? Sempre vou ter que dizer onde está a implementação da classe?
GOSTEI 0
Massuda
07/03/2006
Isso é uma particularidade do compilador que o DevCPP utiliza?? ou tanto faz utilizar qualquer outro compilador como o do Borland C++ Builder ou do Visual C++? Sempre vou ter que dizer onde está a implementação da classe?
Você sempre precisa dar uma lista dos arquivos que são necessários para compilar seu programa. O modo como isso é feito depende de compilador para compilador; os mais modernos usam o conceito de projetos, mas o mais antigos trabalham com makefiles.GOSTEI 0
Keitarosan
07/03/2006
Isso é muito interessante, finalmente descobri pra que ser o bendito do makefile, pelo que entendi do que você falou, ele faz o papel do projeto, guardando os parametros de compilação e linkedicao... certo?
Bom, muito obrigado Massuda, me adjudou bastante... :wink:
Bom, muito obrigado Massuda, me adjudou bastante... :wink:
GOSTEI 0