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
 

.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
 

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

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

×