Je peux pas créer un tableau d'objets en C++

Bonjour, je me demandais si quelqu’un était intéressé pour m’aider avec mon problème. La mission est de créer un tableau d’objets à partir de la classe appelée Objects. Voici à quoi ressemble le code que j’ai :

(Les classes sont dans des fichiers d’en-tête séparés et je sais que je suis censé ajouter:
#include "nomdufichier.h" dans tous les fichiers afin de pouvoir les utiliser correctement).

class Object {
  public:
    string nom;
    double prix;
    Object();
    Object(string nom, double prix);
};

class Store {

  public:
    Object * obj;
    string adresse;
    int count = 0;

  Store(string adr) {
    adresse = adr;
    obj = new Object[10];
  }

  void ajouterObj(Object o) {
    obj[count++] = o; //Je ne sais pas quoi mettre dans cette fonction,
    //et la fonction de la classe Store, et je ne peux rien changer.
    //mais la façon dont la classe Store est écrite.
    //Je dois également les afficher une fois qu'ils ont été créés
  }
  void afficherObj() {

  }
};

int main() {
  Store d("Quelques adresses");
  d.ajouterObj(Object("café", 5));
  d.ajouterObj(Object("jus de fruit", 8.2));
  d.ajouterObj(Object("lait", 6.33));
  d.afficherObj();
  ();

  return 0;
}

C’est mon premier message sur ce forum, donc merci à tous ceux qui peuvent m’aider sur ce point, même si c’est un tout petit peu.

void afficherObj(){
    for(int i = 0; i < count; ++i) {
        std:cout << obj[i].nom << ' ' << obj[i].prix << std::endl;
    }
}

Vous vouliez quelque chose comme ça ?

Sortie :


café 5
jus de fruit 8.2
lait 6.33

Oui, quelque chose comme ça, mais le problème le plus important que je rencontre est que je ne peux même pas créer les objets que je suis censé afficher.

Merci quand même pour cette réponse rapide :smiley:

C’est le message que j’obtiens lorsque j’essaie d’exécuter le programme :

obj\Debug\main.o||In function main':| main.cpp|14|undefined reference to Object::Object(std::string, double)‹ |
main.cpp|15|undefined reference to Object::Object(std::string, double)'| main.cpp|16|undefined reference to Object::Object(std::string, double) ›|
obj\Debug\main.o||In function NB1hjBxWz':| Store.h|6|undefined reference to Object::Object()'|
||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|

Vous devez spécifier vos constructeurs d’objets.

Modifiez les constructeurs déclarés dans la déclaration d’objet en :

Object(): nom(0), prix(0) {};
Object(std::string _nom, double _prix):nom(_nom), prix(_prix) {};

C’est une bonne idée, mais comme je l’ai dit précédemment, je ne suis pas autorisé à modifier autre chose que la classe Store.
Encore une fois, merci pour votre réponse rapide.

Ok, ne changez pas de classe, écrivez ceci après la classe :

Object::Object() {};
Object::Object(std::string _nom, double _prix):nom(_nom), prix(_prix) {};

Vous devez spécifier ces constructeurs, soit dans la classe, soit en dehors de la classe.

J’ai été très impressionné par la qualité de l’information que j’ai reçue et par le fait que j’ai eu l’occasion d’en apprendre davantage sur le sujet, ce qui m’a permis de mieux comprendre le problème.

Encore une fois, merci.

Je vous recommande aussi de jeter un coup d’œil sur ce tutoriel: