Jump to content
Fórum Script Brasil
  • 0

Dúvida - Classes


teonacio
 Share

Question

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.

Edited by teonacio
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...