Ir ao conteúdo
  • Cadastre-se

Dhenyson Jhean

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por Dhenyson Jhean

  1. Em main.cpp você está incluindo o cpp, altere para incluir o .h

     

    Compilei seu programa no g++ com essa alteração e deu certo, da seguinte forma: g++ GradeBook.cpp main.cpp -o main

    Esse que é o problema, quando eu altero para .h da erro na compilação, talvez o problema deve ser meu compilador. Vou tentar outro compilador. Mas o erro que da é esse:

    _____________________________

    C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0x48): undefined reference to `GradeBook::GradeBook(std::string)'

    C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0x94): undefined reference to `GradeBook::GradeBook(std::string)'

    C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0xbb): undefined reference to `GradeBook::getCourseName()'

    C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0xce): undefined reference to `GradeBook::getCourseName()'

    c:\program files (x86)\dev-cpp\mingw32\mingw32\bin\ld.exe C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o: bad reloc address 0xf in section `.text$_ZN9GradeBookD1Ev[__ZN9GradeBookD1Ev]'

     

    c:\program files (x86)\dev-cpp\mingw32\mingw32\bin\ld.exe final link failed: Invalid operation

    C:\Users\Dhenyson\SkyDrive\programacao\cpp\OO\02\collect2.exe [Error] ld returned 1 exit status

  2. Depende da forma que você está compilando.

     

    Se estiver usando uma IDE, normalmente é criando um projeto e ir acrescentando os arquivos c/cpp...

     

    Se for via linha de comando, geralmente basta informar os nomes dos arquivos

     

    Estou usando Notepad++ . Eu ja tentei informar o nome de .h mas da erro. Por favor você pode apenas copiar esses arquivos e colar e compilar? Eu já estou na pagina 250 do livro e estou acompanhando sem problema, porém esse detalhe não me deixa em paz e não consigo estudar até resolver isso. No arquivo main deve está incluindo GradeBook.h e não .cpp  :(

  3. Olá, vou direto ao assunto porque vai ser um pouco grande e complicado de explicar.
    Estou acompanhando um livro (C++ como programa 5º edição, Deitel) da minha faculdade. E fiz um programa que tem 3 arquivos.


    GradeBook.h --> o cabeçalho do programa, aqui apenas vou DECLARAR as funções
    GradeBook.cpp --> Aqui eu vou "importar" as funções declaradas em GradeBook.h e vou criar um corpo para elas.
    main.cpp --> Nesse aqui eu devo "importar" GradeBook.h para acessar suas funções (lembrando que as funções de .h estar em outro arquivo "GradeBook.cpp")

    Conclusão, o objetivo é criar um cabeçalho que eu possa usar suas funções em outro programa, PORÉM o cabeçalho NÃO pode ter o corpo das funções por questão de segurança de dados, se no meu programa eu incluir "GradeBook.cpp" que é o arquivo onde está o corpo das funções de GradeBook.h, não vai adiantar de nada esse esforço...

    ________________________________________
    //Arquivo --> GradeBook.h = cabeçalho

    #include <string>

    using namespace std;

    class GradeBook {

    public:

    GradeBook(string); //Isso é um construtor que server para iniciar courseName
    void setCourseName(string);
    string getCourseName();
    void displayMessage();

    private:
    string courseName;
    _________________________________________
    //Arquivo --> GradeBook.cpp

    #include <iostream>
    #include "GradeBook.h"

    using namespace std;

    GradeBook::GradeBook(string name) {
    setCourseName(name);
    }

    void GradeBook::setCourseName(string name) {

    if (name.length() <= 25) { //se o tamanho da string name for <= 25
    courseName = name;

    if (name.length() > 25) { //se o tamanho da string name for > 25
    courseName = name.substr(0, 25); //courseName recebe apenas os primeiros 25 caracteres, começando do 0
    cout<<"Name \""<<name<<"\" exceeds maximum lenght (25).\n"
    <<"Limiting courseName to first 25 characters.\n"<<endl;
    }
    }

    string GradeBook::getCourseName() {
    return courseName;
    }

    void GradeBook::displayMessage() {
    cout<<"Welcome to the Grade Book for\n"<<getCourseName()<<"!"<<endl;
    }
    ____________________________________________
    //arquivo --> main.cpp

    #include <iostream>

    //A proxima linha é que esta o erro, não dar erro na verdade, mas era pra está incluindo
    // o arquivo "GradeBook.h" igual o livro, mas o meu só funciona incluindo "GradeBook.cpp"
    #include "GradeBook.cpp"

    using namespace std;

    int main() {

    GradeBook gradeBook1("Nome do primeiro curso.");
    GradeBook gradeBook2("Nome do segundo curso");

    cout<<"gradeBook1 created for course: "<<gradeBook1.getCourseName()
    <<"\ngradeBook2 created for course: "<<gradeBook2.getCourseName()
    <<endl;

    return 0;
    }

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!