Ir ao conteúdo
  • Cadastre-se

C++ erro na compillação


specter98

Posts recomendados

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
 

 

Link para o comentário
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

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...