Créer un tableau de structure à l'aide de nouvelles

J'ai une certaine situation difficile, là, qui, je l'espère, certains corps va m'aider.

J'ai le texte suivant,

struct CandyBar{ 
  std::string name; 
  double weight; 
  int calories; 
} ;

Maintenant, pour la création d'un tableau de structure pour contenir beaucoup de barres chocolatées est beaucoup plus simple que j'ai fait comme;

int main(){
   CandyBar bars[] = {{"Mango tart", 2.3, 100}, {"Yo Yo", 3.2, 130}, {"Orange Ball", 1.7, 98}};
  return 0;
}

Mais, maintenant, je veux créer la même structure à l'aide de nouveau. Il est assez simple, quand je pense à cela, mais se bloque et ne fonctionne pas.

CandyBar *bars = new CandyBar;
  (*bars).name = "Mango tart";
   bars->weight =  2.3;
   bars->calories =  100;
   bars += 1;

  (*bars).name = "Yo Yo";
  bars->weight =  3.2;
  bars->calories =  130;

  bars += 1;
  (*bars).name =  "Orange Ball";
  bars->weight =  1.7;
  bars->calories =  98; 

Mais, cela ne fonctionne pas. Comme je pense que le premier pointeur est un emplacement de mémoire pointant vers la première structure puis-je créer la structure, puis d'augmenter l'adresse à l'aide de la barre += 1, et aller sur la création d'un pointeur, mais ai-je raté quelque chose de vraiment grave.

J'apprécierais vraiment votre aide.

Vous n'êtes allocation d'espace pour les 1 CandyBar.
Je n'ai pas beaucoup d'expérience en C++, mais un vector ou sharedptr sonne comme la voie à suivre.
Vous voudrez probablement une std::vector<CandyBar>.
Les réponses ci-dessus. Mais puis-je vous demander pourquoi vous alternez entre (*bars). et bars->? Il semble idiot. Aussi, comment pouvez-vous supprimer le tableau plus tard, lorsque vous avez modifié le pointeur qui contient son adresse?
non, shared_ptr serait d'utiliser delete dans le destructeur sur quelque chose alloué avec new[].

OriginalL'auteur | 2013-01-01