2010-09-04 8 views
0
struct bop 
{ 
    char fullname[ strSize ]; 
    char title[ strSize ]; 
    char bopname[ strSize ]; 
    int preference; 
}; 

int main() 
{ 
    bop *pn = new bop[ 3 ]; 

Existe-t-il un moyen d'initialiser les membres du tableau de caractères en même temps? Edit: Je sais que je peux utiliser de la ficelle ou du vecteur mais je voulais juste savoir par curiosité.Pointeur vers le tableau de la structure

+1

Initialisez-les à quoi? –

+3

Qu'est-ce que 'strSize'? Pourquoi ne pas utiliser 'std :: vector' et' std :: string'? – GManNickG

+0

Un petit '}' a été complètement miné – Chubsdad

Répondre

0

Si je ne me trompe pas, vous pouvez ajouter un constructeur à la struct initialisant les valeurs aux valeurs par défaut. Ceci est similaire sinon identique à ce que vous utilisez dans les classes.

+0

Cela semble être une bonne solution. Je n'ai vraiment pas l'intention d'utiliser un code comme celui-ci, je voulais juste savoir si vous pouviez initialiser un membre struct comme ça tout à la fois. Merci. – ShrimpCrackers

1

Non, désolé. Vous devrez faire une boucle et assigner des valeurs.

2

Oui. Vous pouvez les initialiser à tous-0 par valeur initialisant le tableau

bop *pn = new bop[ 3 ](); 

Mais en fait, je préférerais utiliser std::string et std::vector comme un commentateur a dit, à moins que vous avez besoin que struct pour être vraiment compatible octet avec certains interface qui ne comprend pas les structures de haut niveau. Si vous avez besoin de cette conception simpliste, vous pouvez toujours initialiser sur la pile et copier. Par exemple, pour « initialiser » le premier élément

bop b = { "bob babs", "mr.", "bobby", 69 }; 
memcpy(pn, &b, sizeof b); 

Notez que dans C++ 0x vous pouvez dire

bop *pn = new bop[3] { 
    { "bob babs", "mr.", "bobby", 0xd00d }, 
    { ..., 0xbabe }, 
    { ..., 69 } 
}; 
+0

@Johanees cela initialise-t-il le tableau entier ou seulement la première valeur de pn? – brett

+0

Ah, j'ai vu que l'implémentation 0x quelque part mais je ne savais pas que c'était 0x. Merci d'avoir clarifié cela. – ShrimpCrackers

+0

+1 pour donner l'information C++ 0x – Chubsdad

Questions connexes