Olá, estou iniciando no c++ e aprendi agora o static e construtores e estou fazendo um codigo e não funciona uma coisinha, colocarei o codigo e dps digo o problema.
//Trabalho
#include <iostream.h>
#include <conio.h>
class aluno
{
private:
int serie, grau;
char nome[20];
static int n;
public:
aluno() {n++;}
~aluno() {n--;}
void inseredados()
{
cout <<"\n Digite seu nome: ";
cin >> nome;
cout <<"\n Digite sua serie: ";
cin >> serie;
cout <<"\n Digite o grau: ";
cin >> grau;
printdata();
}
void printdata()
{
cout <<"\n Nome do aluno: " << nome;
cout <<"\n Serie do aluno: "<< serie;
cout <<"\n Grau do aluno: " << grau;
}
int numalunos() const
{
return n;
}
};
int aluno::n = 0;
const MAX=10;
void main()
{
aluno A[MAX],x;
int i=0,y;
char resp;
do{
A[i].inseredados();
cout <<"\n Adicionar mais um aluno? (s/n)";
cin >> resp;
} while(resp != 'n' && i<MAX);
y = x.numalunos()-1;
cout <<"\n Numero de alunos: " << y;
getch();
}
Então a variavel static n, era pra guarda quantos alunos eu botasse, o que eu aprendi (e em outro exemplo deu certo). É que colocando o n++ ali dentro do construtor, cada vez que eu crio um objeto ele incrementa o n. Mas nesse caso como o vetor tem 10 posiçoes ele logo de cara fica 10 no n, e não muda. Mesmo q eu cadastre só 2 alunos, ou seja 2 objetos. Ele sempre dá 10.
Question
tifian
Olá, estou iniciando no c++ e aprendi agora o static e construtores e estou fazendo um codigo e não funciona uma coisinha, colocarei o codigo e dps digo o problema.
Então a variavel static n, era pra guarda quantos alunos eu botasse, o que eu aprendi (e em outro exemplo deu certo). É que colocando o n++ ali dentro do construtor, cada vez que eu crio um objeto ele incrementa o n. Mas nesse caso como o vetor tem 10 posiçoes ele logo de cara fica 10 no n, e não muda. Mesmo q eu cadastre só 2 alunos, ou seja 2 objetos. Ele sempre dá 10.
O que posso fazer?
Abraço
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.