Ir ao conteúdo

Posts recomendados

Postado

Boa tarde. Estou tendo problemas com meu primeiro programa em C++. A ideia é implementar o clássico "tipo aluno", mas não estou conseguindo acessar a classe.

 

o .h:

#ifndef TIPO_ALUNO_H
#define TIPO_ALUNO_H

class Tipo_aluno {
    
private:
            char nome[50];
            char cpf[20];
            float nota[3];    

public:
        void set_nome(char* novo_nome);
      
};
#endif

 

o .c:

 

#include "Tipo_aluno.h"
#include <string.h>

   void set_nome(char* novo_nome){
       strcpy(nome,novo_nome);
   }

 

e o erro:

 

Citação

Tipo_aluno.cpp: In function ‘void set_nome(char*)’:
Tipo_aluno.cpp:18:15: error: ‘nome’ was not declared in this scope
        strcpy(nome,novo_nome);

 

 

Desde já, obrigado e um bom natal a todos

 

 

 

 

Postado

         Eu acho que o ponteiro não pode sair deste acesso privado limitou a gravação fora do scope,

então a escrita tem que ser realizada no scope, tudo inclusive o acesso variável, eu acho que na

mecânica da programação Orientada a Objeto este fenômeno chama se encapsulada. 

void set_nome(){
	cout << "Digite seu nome (máximo de x caracteres): " << endl;
 	cin >> nome;
   }

         Desculpa minha falta de desenvoltura; é que sei pouquíssimo de C++/C#.

Postado

No caso, você não esta acessando a class Tipo_aluno, quando você usou a função set_nome no arquivo .c, o certo seria:

 

#include "Tipo_aluno.h"
#include <string.h>

//Assim, essa função tem o escopo, da função declarada na classe.
void Tipo_aluno::set_nome(const char* novo_nome){
  strcpy(nome,novo_nome);//nome ja foi declarado no private
}

 

Postado

         Por isso que não programo em C++, observe meu pensamento:

Se eu  digo  que  nome  é  privado  e  depois  strcpy  acessa  nome   livremente, então

é  especificado  como  privado,  porém  tem  uma exceção.  O lógico  na minha opinião

é que: somente a classe fosse  capaz,  dentro  desta  regra   ele  teria que implementar 

um bloco de código que faz a mesma coisa que strcpy."O que é muito fácil de fazer;"

 

 

_________________________________

Postado
1 hora atrás, 1freakday disse:

No caso, você não esta acessando a class Tipo_aluno, quando você usou a função set_nome no arquivo .c, o certo seria:

 


#include "Tipo_aluno.h"
#include <string.h>

//Assim, essa função tem o escopo, da função declarada na classe.
void Tipo_aluno::set_nome(const char* novo_nome){
  strcpy(nome,novo_nome);//nome ja foi declarado no private
}

 

 

 

faz sentido.. realmente deu certo. Obrigado.

 

 

1 hora atrás, Mauro Britivaldo disse:

         Por isso que não programo em C++, observe meu pensamento:

Se eu  digo  que  nome  é  privado  e  depois  strcpy  acessa  nome   livremente, então

é  especificado  como  privado,  porém  tem  uma exceção.  O lógico  na minha opinião

é que: somente a classe fosse  capaz,  dentro  desta  regra   ele  teria que implementar 

um bloco de código que faz a mesma coisa que strcpy."O que é muito fácil de fazer;"

 

 

_________________________________

 

de certa forma faz sentido. mas na minha lógica, quanto mais bibliotecas e funções eu puder usar, melhor kk

 

Postado
5 minutos atrás, Maik Wander disse:

 

 

faz sentido.. realmente deu certo. Obrigado.

 

 

 

de certa forma faz sentido. mas na minha lógica, quanto mais bibliotecas e funções eu puder usar, melhor kk

 

Compreendo, vale aquela frase: "Não há motivos para reinventar a roda". kk'

Visitante
Este tópico está impedido de receber novas respostas.

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!