Rickbyte 0 Denunciar post Postado Novembro 23, 2007 Bom dia pessoal. Sou novo no Fórum e iniciante em C. Tenho uma dúvida que não consegui resolver mesmo consultando livros. Declarei a seguinte estrutura: #define a 50 /* ***** Esturura Eleitores ***** */ struct cadastro { char nome[80]; int titulo; int zona; int secao; }; struct cadastro eleitor[a]; Preciso inicializar o membro nome[80] com "Vazio" Tentei da seguinte maneira /* ***** Esturura Eleitores ***** */ struct cadastro { char nome[80]="Vazio"; int titulo; int zona; int secao; }; struct cadastro eleitor[a]; Mas ta dando erro na momento de compilar (estou usando o Visual Studio 2005), a mensagem é a seguinte: error C2864: 'cadastro::nome' : only static const integral data members can be initialized within a class Não sei mais como fazer. Já tentei fazer um laço para atribuir mas também da erro. Como eu posso inializar o membro da estrutura? Desde já grato!! Compartilhar este post Link para o post Compartilhar em outros sites
Ozeax 0 Denunciar post Postado Novembro 23, 2007 na declaração da struct, declare nome como um ponteiro: char *nome; depois faça alocação dinâmica de memória com alloc() ou malloc(), ou, no caso do C++, new() nome=new char[80]; daí, pode fazer uma laço para preencher o lixo com zeros ou espaços, ou o com o ascii que representa o fim de lina (CL, ou CR). Ou se achar mais cômodo, use a bliblioteca padrão para strings... ... Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 23, 2007 como nome é uma string. Basta inicializar o primeiro elemento com o caracter fim de string \ zero. eleitor.nome[0] = '\'; Compartilhar este post Link para o post Compartilhar em outros sites
Myho 2 Denunciar post Postado Novembro 24, 2007 E aew cara, seguinte, nao sei se entedi bem, mas voce quer zerar ela dentro da propria declaracao da estrutura? Isso nao eh permitido, como seu proprio compilador avisa, apenas variaveis constantes podem ser inicializadas na declaracao da estrutura. Entao eu sugiro q voce crie um construtor para a struct, q ira zerar todos os valores por exemplo. struct teste { int num; char frase[80]; bool ativa; teste() // inicio do contrutor { frase[0] = '\'; // como o kandrade falou num = 0; ativa = false; } // fim do construtor }; entao, agora toda vez q uma variavel do tipo teste for criada, o valor de seus variaveis ja estarao zerados. Lembrando q o contrutor eh chamado automaticamente quando uma variavel do tipo de dado eh declarada. Lembrando 2: onde esta escrito '/ ' na verdade eh BARRA ZERO, esse forum tem um bugzinho ai... '/0' Compartilhar este post Link para o post Compartilhar em outros sites
Rickbyte 0 Denunciar post Postado Novembro 24, 2007 E aew cara, seguinte, nao sei se entedi bem, mas voce quer zerar ela dentro da propria declaracao da estrutura? Isso nao eh permitido, como seu proprio compilador avisa, apenas variaveis constantes podem ser inicializadas na declaracao da estrutura. Entao eu sugiro q voce crie um construtor para a struct, q ira zerar todos os valores por exemplo. struct teste { int num; char frase[80]; bool ativa; teste() // inicio do contrutor { frase[0] = '\'; // como o kandrade falou num = 0; ativa = false; } // fim do construtor }; entao, agora toda vez q uma variavel do tipo teste for criada, o valor de seus variaveis ja estarao zerados. Lembrando q o contrutor eh chamado automaticamente quando uma variavel do tipo de dado eh declarada. Lembrando 2: onde esta escrito '/ ' na verdade eh BARRA ZERO, esse forum tem um bugzinho ai... '/0' Obrigado pela ajuda. Como a variavel estrutura que criei é uma matriz, não precisarei rodar um laço for para zerar tudo? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 25, 2007 Se fosse uma matriz de inteiros precisaria zerar todos elementos, mas como é uma matriz de caracteres ou vetor de caracteres ou mesmo uma string voce só precisa zerar como foi dito acima. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Obrigado pela ajuda. Como a variavel estrutura que criei é uma matriz, não precisarei rodar um laço for para zerar tudo? Compartilhar este post Link para o post Compartilhar em outros sites
Rickbyte 0 Denunciar post Postado Novembro 26, 2007 http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Obrigado pela ajuda pessoal. Assunto Resolvido!! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 26, 2007 Foi nada!! Vou colocar resolvido. Obrigado pela ajuda pessoal. Assunto Resolvido!! Compartilhar este post Link para o post Compartilhar em outros sites