Dhenyson Jhean
-
Posts
3 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Dhenyson Jhean
-
-
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
-
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
C++, como interagir arquivo "main.cpp" com arquivo "cabeçalho.h" e "cabeçalho.cpp"
em C/C#/C++
Postado
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