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

Dúvida Com Variável Static


Marshall

Pergunta

Fiz uma classe com uma variável static privada para atuar como contador de "cadastros"... e no construtor.. uma função que incrementa ela toda vez que é criado um objeto, fazendo assim a contagem. Mas sempre dá erro na criação do código-objeto... SEMPRE....tanto no Dev-C++ como Visual C++... estou com raiva já! Não sei o que tem de errado! E sim, já tentei colocar a incrementação da variável diretamente no construtor. Segue código:

#include <iostream.h>

#include <stdlib.h>

class ALUNO

{

private:

char Nome[100];

int serie, grau;

static int counter;

public:

ALUNO() { Adiciona(); }

~ALUNO() { Remove(); }

void Adiciona();

void Remove();

void Solicita();

void Imprime();

int getrec() const { return counter; }

};

void ALUNO::Adiciona()

{

counter++;

}

void ALUNO::Remove()

{

counter--;

}

void ALUNO::Solicita()

{

cout << "Digite o nome do aluno: ";

cin >> Nome;

cout << "\nDigite a serie do aluno: ";

cin >> serie;

cout << "\nDigite o grau do aluno: ";

cin >> grau;

}

void ALUNO::Imprime()

{

cout << "\n\nNome: " << Nome << "\nSerie: " << serie << "\nGrau: " << grau << "\n";

}

void main()

{

ALUNO alu1;

alu1.Solicita();

alu1.Imprime();

cout << "\n Numero de alunos cadastrados: " << alu1.getrec();

system("PAUSE");

}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O problema era a inicialização da variável estática:

#include <iostream>
using namespace std;

class ALUNO {
    private:
        char Nome[100];
        int serie, grau;
        static int counter;
    
    public:
        ALUNO() {
            Adiciona();
        }
        
        ~ALUNO() {
            Remove();
        }
        
        void Adiciona();        
        void Remove();        
        void Solicita();        
        void Imprime();        
        int getrec() const {
            return counter;
        }
};

int ALUNO::counter = 0;     // Faltava isso.

void ALUNO::Adiciona() {
    counter++;
}

void ALUNO::Remove() {
    counter--;
}

void ALUNO::Solicita() {
    cout << "Digite o nome do aluno: ";
    cin >> Nome;
    cout << "\nDigite a serie do aluno: ";
    cin >> serie;
    cout << "\nDigite o grau do aluno: ";
    cin >> grau;
}

void ALUNO::Imprime() {
    cout << "\n\nNome: " << Nome << "\nSerie: ";
    cout << serie << "\nGrau: " << grau << "\n";
}

int main(int argc, char * argv[]) {
    
    ALUNO alu1;
    alu1.Solicita();
    alu1.Imprime();
    cout << "\n Numero de alunos cadastrados: " << alu1.getrec();
    system("PAUSE");
}

[]'s

iSoron.

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...