Implementação de classe em arquivo separado

07/03/2006

3

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
#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)´



Responder

Posts

07/03/2006

Massuda

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.


Responder

07/03/2006

Keitarosan

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?


Responder

07/03/2006

Massuda

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.


Responder

07/03/2006

Keitarosan

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:


Responder