Ir para conteúdo
Fórum Script Brasil
  • 0

Dificuldade Na Criação E Uso De Classes Em C++


Castro

Pergunta

:(

Estou com dificuldade de criar classes em C++ Estou tendo dificuldades com acesso. Por favor vejam o projeto. Se puderem eliminar ao erros apontados agradeço

Criei o seguinte projeto o seguinte projeto

Arquivo metodoestatico.cpp

#include "metodoestatico.h"
//---------------------------------------------------------Arquivo main.cpp
int main ()
{
string linha = "--------------------------------------------------------------\n";
 cout << "Entre com o número de alunos da disciplina (ex =3):";
int numeroAlunos;
cin >> numeroAlunos;
cin.get ();
//Cria um objeto do tipo TPessoa com nome professor
TPessoa professor;
//Cria um vetor de objetos alunos do tipo TPessoa
vector < TPessoa > aluno ( numeroAlunos);
cout << "Entre com o nome do professor: ";
getline (cin, professor.nome);
cout << "Entre com a matricula do professor: ";
getline (cin, professor.matricula);
for (int contador = 0; contador < aluno.size (); contador++)
{
cout << "Aluno " << contador << endl;
aluno[contador].Entrada ();
}

cout << linha;
cout << "RELAÇÃO DE PROFESSORES E ALUNOS : " << endl;
cout << linha;
cout << "Nome do professor: " << professor.nome << "\n";
cout << "Matricula : " << professor.matricula << "\n";
for (int contador = 0; contador < aluno.size (); contador++)
{
cout << linha;
cout << "Aluno " << contador << endl;
aluno[contador].Saida ();
}
cin.get ();
return 0;
}
============================== Arquiivo metodoestático.h
// ---------------------------------------------------------Arquivo TAluno.h
// ---------------------------------------------------------Bibliotecas C/C++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// ---------------------------------------------------------Classe
/*
A classe TPessoa representa uma pessoa (um aluno ou um professor)
de uma universidade.
Tem um nome, uma matricula e um IAA.
E métodos básicos para entrada e saída de dados.
*/
class TPessoa
{
// ---------------------------------------------------------Atributos
private:
std::string nome;
std::string matricula;
float iaa;
private:
static int numeroAlunos;
public:
// ---------------------------------------------------------Métodos
//Método do objeto , altera as propriedades do objeto
//Leitura dos atributos (nome, matricula)
void Entrada ();
//Saida dos atributos ( nome, matricula, iaa)
void Saida () const;
//Um método estático só pode alterar atributos estáticos
static int GetnumeroAlunos ()
{
return numeroAlunos;
}
};
/*
// Atributo estático é aquele que pertence a classe e não ao objeto
//e precisa ser definido depois da classe

*/
//int TPessoa:: numeroAlunos = 0;
‘============================================== Arquivo Taluno.cpp
#include "metodoestatico.h"

int TPessoa::numeroAlunos = 0;
//---------------------------------------------------------Arquivo TAluno.cpp
// Definição dos métodos
void TPessoa::Entrada ()
{
  
cout << "Entre com o nome do aluno: ";
getline (cin, nome);
cout << "Entre com a matricula do aluno: ";
getline (cin, matricula);
cout << "Entre com o IAA do aluno: ";
cin >> iaa;
cin.get ();

}
void TPessoa::Saida () const
{
 cout << "Nome do aluno: " << nome << endl;
cout << "Matricula : " << matricula << endl;
cout << "iaa : " << iaa << endl;
}
Erros: Esta caindo na linha
std::string nome;

do arquivo metodoestatico com as seguintes mensagens:

D:\C++\metodoestatico.h In function `int main()':

18 D:\C++\metodoestatico.h `std::string TPessoa::nome' is private

15 D:\C++\metodoestatico.cpp within this context

19 D:\C++\metodoestatico.h `std::string TPessoa::matricula' is private

17 D:\C++\metodoestatico.cpp within this context

18 D:\C++\metodoestatico.h `std::string TPessoa::nome' is private

27 D:\C++\metodoestatico.cpp within this context

19 D:\C++\metodoestatico.h `std::string TPessoa::matricula' is private

28 D:\C++\metodoestatico.cpp within this context

D:\C++\G__~1.EXE metodoestatico.o: No such file or directory.

Obriigado

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Veja isso:

getline (cin, professor.nome);

Voce criou um objeto chamado professor.

O tipo desse objeto é pessoa. Na definição da classe pessoa o atributo nome está com o modificador private.

Com esse modificador o atributo só é visível dentro da classe e só podem ser acessados, modificados

ou executados por métodos da classe.

Isso é usado para encapsular o atributo.

O que pode ser feito para corrigir esses problemas:

1. Manter o encapsulamento do atributo e criar dois métodos conhecidos como set e get. Um para retornar o resultado e outro para modificar o atributo.

2. Usar o modificador public em vez do private.

;)

Link para o comentário
Compartilhar em outros sites

  • 0

:(

Kandrade,

Ok.

Mudei para public e deu certo. Mas fique curioso.

Se não for difícil você poderia criar os métodos set e get em meu código ? não tenho idéia de como fazer isso. Nas apostilas de C++ que peguei na Internet não vi essa abordagem. Só sei, que manter os atributos da classe como private é o mais correto.

Poderia lançar alguma lluz sobre a criação desses métodos ? Já li algo sobre setw, mas acho que não é disso que se está falando.

Obrigado

Editado por Castro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...