Problema com definição de classe em C
18/05/2008
0
Sou iniciante em C++ e estou precisando de ajuda.
Peguei uma apostila de C++ na internet, incluse é uma apostila muito boa, e nela vem explicando tudo sobre POO com C++.
Tem um capítulo que fala sobre compilação de um programa dividido em vários arquivos. Diz o seguinte: ´podemos fazer a declaração de uma nova classe em um arquivo .h (cabeçalho), implementar essa classe em um segundo arquivo .cpp incluindo a #include ´nome_do_arquivo_h.h´ e utilizar essa classe em um programa qualquer, simplesmente incluindo include ´nome_do_arquivo_h.h´.
O problema é que quando crio uma nova classe, por exemplo, classe contador, e coloco somente sua declaração com seus dados e funções em um arquivo .h e deixo sua implementação em outro arquivo (.cpp) incluindo o include ´nome_do_arquivo_h.h´, o programa não compila.
Suponhamos que tenha a função incrementa na classe contador.
Quando tento compilar o programa o compiliador exibe a seguinte mensagem:
undefined reference ´contador::incrementa(void)´
Mas quando faço a declaração da classe e sua implementação no mesmo arquivo, seja .h ou .cpp, funciona perfeitamente. O problema é quando divido em dois arquivos.
Estou usando o Dev-C++ 4.9.9.2.
Alguém pode me ajudar?
Peguei uma apostila de C++ na internet, incluse é uma apostila muito boa, e nela vem explicando tudo sobre POO com C++.
Tem um capítulo que fala sobre compilação de um programa dividido em vários arquivos. Diz o seguinte: ´podemos fazer a declaração de uma nova classe em um arquivo .h (cabeçalho), implementar essa classe em um segundo arquivo .cpp incluindo a #include ´nome_do_arquivo_h.h´ e utilizar essa classe em um programa qualquer, simplesmente incluindo include ´nome_do_arquivo_h.h´.
O problema é que quando crio uma nova classe, por exemplo, classe contador, e coloco somente sua declaração com seus dados e funções em um arquivo .h e deixo sua implementação em outro arquivo (.cpp) incluindo o include ´nome_do_arquivo_h.h´, o programa não compila.
Suponhamos que tenha a função incrementa na classe contador.
Quando tento compilar o programa o compiliador exibe a seguinte mensagem:
undefined reference ´contador::incrementa(void)´
Mas quando faço a declaração da classe e sua implementação no mesmo arquivo, seja .h ou .cpp, funciona perfeitamente. O problema é quando divido em dois arquivos.
Estou usando o Dev-C++ 4.9.9.2.
Alguém pode me ajudar?
Jonathan Bispo
Curtir tópico
+ 0
Responder
Posts
19/05/2008
Massuda
O .H que declara a classe precisa também ser incluído no .CPP que implementa a classe via #include.
Responder
Clique aqui para fazer login e interagir na Comunidade :)