Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida - Classes


teonacio

Pergunta

Olá. Estou com dúvida em relação a um código que fiz para o estudo de classes, e gostaria de ajuda para resolver um erro. Segue abaixo:

calculo.h

 

#ifndef CALCULO_H
#define CALCULO_H
class Calculo{
private:
    int x;
    int y;
    int z;
public:
    void setXYZ(int mx,int my,int mz);
};
#endif // CALCULO_H
 
calculo.cpp
#include "calculo.h"
void Calculo::setXYZ(int mx,int my,int mz){
    x = mx;
    y = my;
    z = mz;
}
 
main.cpp
#include <iostream>
#include "calculo.h"
using namespace std;
int main(){
    Calculo C1;
    C1.setXYZ(2,3,4);
    return 0;
}
 

 

Tanto o codeblocks quanto o devc++ retornam o seguinte erro:

 

undefined reference to 'Calculo::setXYZ(int, int, int)'

 

Estou tentando a horas resolver, mas n encontro a solucao.

Editado por teonacio
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

você esta criando um projeto para isso? Si não for assim, de a file->new->project... e escolha console aplication(codeblocks), siga os passos, escolha C++ tatata e pronto, logo vaia criando os arquivos e que esses estejam incluídos no menu da direita, si não aparecer aperte maiuscula+F2. Certamente você só criou o main e colocou esses 2 arquivos juntos, apesar de estar correto, o codeblocks não sabe o que fazer para linkar(ligar) esses arquivos, por isso precisa de um projeto.

Ao incluir o calculo.h dentro de "" você esta dizendo a main que o "calculo.h" esta na mesma pasta, porem tanto main.cpp, como calculo.h não sabem nada de calculo.cpp, porque dentro da classe só esta a declaração, porem a definição é como si não existisse. Ao estar dentro de um projeto, codeblocks busca automaticamente entre todos os .cpp a definição de todas as funções e por isso não precisamos fazer includes de arquivos .cpp. Nem tente fazer includes de arquivos cpp, é incorreto ok.
 

Resumindo, é impossível trabalhar em projetos algo grandes sem fazer uso de um projeto que é o que nos ajuda a manter tudo organizado. Outra coisa que você pode fazer é a função setXYZ como inline.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...