Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
specter98

C++ erro na compillação

Recommended Posts

Quando eu tento compilar só os metodos da classe da um erro :

Codigo:

#include <iostream>
#include <stdlib.h>
#include "grade.hpp"
Grade::Grade(){
int i;
int j;
NumLinha = 50;
NumColuna = 50;
Matriz =(char**)malloc(NumLinha*sizeof(sizeof(char*)));
for(i = 0; i < NumLinha; i++){
Matriz = (char*)malloc(NumColuna*sizeof(char));
}
for(i = 0;i < NumLinha;i++){
for(j = 0; j < NumColuna;j++){
Matriz[j] = '-' ;
}
}
}

 

Erro:

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: na função `_start':
(.text+0x20): referência indefinida para `main'
collect2: error: ld returned 1 exit status
 

fiz uma main simples so pra testar , e piora

inclue <iostream>
#include "grade.cpp"
using namespace std;
int main()
{
Grade grade1;
return 0;
}


 

erro:

 

/tmp/ccFd2GKV.o: na função `Grade::Grade()':
grade.cpp:(.text+0x0): múltipla definição de `Grade::Grade()'
/tmp/cceMo1wz.o:main.cpp:(.text+0x0): definido primeiramente aqui
/tmp/ccFd2GKV.o: na função `Grade::Grade()':
grade.cpp:(.text+0x0): múltipla definição de `Grade::Grade()'
/tmp/cceMo1wz.o:main.cpp:(.text+0x0): definido primeiramente aqui
/tmp/cceMo1wz.o: na função `main':
main.cpp:(.text+0x111): referência indefinida para `Grade::~Grade()'
collect2: error: ld returned 1 exit status
 

 

Editado por DiF
Usar o botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia postar o seu código em <code> e postar o conteúdo do arquivo grade.hpp?

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • .HPP

    :

    #ifndef GRADE_HPP
    #define GRADE_HPP
    using namespace std;
    class Grade {
        private:
            char **Matriz;
            int CoordenadaX;
            int CoordenadaY;
            int NumLinha;
            int NumColuna;
    
        public:
            Grade();
            Grade(int NumLinha, int NumColuna);
            ~Grade();
            int getNumLinha();
            int getNumColuna();
            int  getCoordenadaX();
            void setCoordenadaX(int CoordenadaX);
            int  getCoordenadaY();
            void setCoordenadaY(int CoordenadaY);
            void ReviveCelula();
    };
    
    #endif


    @TYSQUARE89

    adicionado 26 minutos depois
    #include <iostream>
    #include <stdlib.h>
    #include "grade.hpp"
    
    Grade::Grade(){
    int i;
    int j;
    NumLinha = 50;
    NumColuna = 50;
    
    Matriz =(char**)malloc(NumLinha*sizeof(sizeof(char*)));
    
    for(i = 0; i < NumLinha; i++){
    
    Matriz[i] = (char*)malloc(NumColuna*sizeof(char));
    
    }
    
    for(i = 0;i < NumLinha;i++){
    
    for(j = 0; j < NumColuna;j++){
    
    Matriz[i][j] = '-' ;
    
    }
    
    }
    
    }
    
     Grade::Grade(int NumLinha , int NumColuna){
    int i;
    int j;
    this->NumLinha = NumLinha;
    this->NumColuna = NumColuna;
    
    
    Matriz =(char**)malloc(NumLinha*sizeof(sizeof(char*)));
    
    for(i = 0; i < NumLinha; i++){
    
    Matriz[i] = (char*)malloc(NumColuna*sizeof(char));
    
    }
    
    for(i = 0;i < NumLinha;i++){
    
    for(j = 0; j < NumColuna;j++){
    
    Matriz[i][j] = '-' ;
    
    }
    
    }
    
    }
    
    
    Grade::~Grade(){
    
    free(Matriz);
    
    Matriz=NULL;
    
    }
    
                                  
     int Grade::getNumlinha(){
    
    return NumLinha;
    
    }
    
    int Grade::getNumColuna(){
    
    return NumColuna;
    
    }
    
    int Grade::getCoordenadaX(){
    
    return CoordenadaX;
    
    }
    
    void Grade::setCoordenadaX(int CoordenadaX){
    
    this->CoordenadaX = CoordenadaX;
    
    }
    
     
    
    int Grade::getCoordenadaX(){
    
    return CoordenadaY;
    
    }
    
    void Grade::setCoordenadaY(int CoordenadaY){
    
    this->CoordenadaY = CoordenadaY;
    
    }
    
    
    
     

    .CPP

    adicionado 27 minutos depois
    #ifndef GRADE_HPP
    #define GRADE_HPP
    
    using namespace std;
    
    class Grade {
    
        private:
            char **Matriz;
            int CoordenadaX;
            int CoordenadaY;
            int NumLinha;
            int NumColuna;
    
    
        public:
    
            Grade();
            Grade(int NumLinha, int NumColuna);
            ~Grade();
            int getNumLinha();
            int getNumColuna();
            int  getCoordenadaX();
            void setCoordenadaX(int CoordenadaX);
            int  getCoordenadaY();
            void setCoordenadaY(int CoordenadaY);
            void ReviveCelula();
    
    };
    
    
    
    
    #endif

    .HPP

    Editado por DiF

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Então, nesses códigos que você mandou não há erros de duplicação e sim de ortografia, como em:

    getNumLinha(HPP) e getNumlinha(CPP)

    getCoordenadaY(HPP) e getCoordenadaX(CPP) < duplicado...

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Corrigi isso mas mesmo assim ainda da erro , eu tento compilar so os metodos pra ver se o compilador diz algo , aqui esta os metodos corrigidos 

    #include <iostream>
    #include <stdlib.h>
    #include "grade.hpp"
    
    Grade::Grade(){
    int i;
    int j;
    NumLinha = 50;
    NumColuna = 50;
    
    Matriz =(char**)malloc(NumLinha*sizeof(sizeof(char*)));
    
    for(i = 0; i < NumLinha; i++){
    
    Matriz[i] = (char*)malloc(NumColuna*sizeof(char));
    
    }
    
    for(i = 0;i < NumLinha;i++){
    
    for(j = 0; j < NumColuna;j++){
    
    Matriz[i][j] = '-' ;
    
    }
    
    }
    
    }
    
    
    Grade::Grade(int NumLinha , int NumColuna){
    int i;
    int j;
    this->NumLinha = NumLinha;
    this->NumColuna = NumColuna;
    
    
    Matriz =(char**)malloc(NumLinha*sizeof(sizeof(char*)));
    
    for(i = 0; i < NumLinha; i++){
      Matriz[i] = (char*)malloc(NumColuna*sizeof(char));
    
    }
    
    for(i = 0;i < NumLinha;i++){
    
    for(j = 0; j < NumColuna;j++){
    
    Matriz[i][j] = '-' ;
    
    }
    
    }
    
    }
    
    
    Grade::~Grade(){
    
    free(Matriz);
    
    Matriz=NULL;
    
    }
    
    
    int Grade::getNumLinha(){
    
    return NumLinha;
    
    }
                          
     int Grade::getNumColuna(){
    
    return NumColuna;
    
    }
    
    int Grade::getCoordenadaX(){
    
    return CoordenadaX;
    
    }
    
    void Grade::setCoordenadaX(int CoordenadaX){
    
    this->CoordenadaX = CoordenadaX;
    
    }
    
    
    int Grade::getCoordenadaY(){
    
    return CoordenadaY;
    
    }
    
    void Grade::setCoordenadaY(int CoordenadaY){
    
    this->CoordenadaY = CoordenadaY;
    
    }
                           
    void Grade::ReviveCelula()
    {
    int i;
    char Parada;
    cout << "Insira as coordenadas inicias" << endl;
    
    do{
    
    while(i < 10)
    {
    
     cout << "Linha: "<< endl;
     setCoordenadaX(CoordenadaX);
    
     cout << "Coluna: "<<endl;
     setCoordenadaY(CoordenadaY);
    
    if((getCoordenadaX()*getCoordenadaY()) < (NumLinha*NumColuna))
    {
    
     Matriz[getCoordenadaX()][getCoordenadaY()]='+' ;
    
    }else {
    
    cout << "Coordenada invalida" << endl;
    
    }
    
    i++;
    
    }
    cout << "Continuar inserindo novas coordenadas?" << endl;
    cout << "Digite S ou N" << endl;
    cin >> Parada ;
    
    }while(Parada !='N');
    
    }
    
           

    .CPP  

     

    e  o erro que aparece e esse :

     

    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: na função `_start':
    (.text+0x20): referência indefinida para `main'
    collect2: error: ld returned 1 exit status

     

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @specter98  Esse último erro ai é porque você matou o main
     

    main()
    {}

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sim, no caso você só precisa usar #include "grade.cpp" no arquivo com a função main()

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×