如何在地图C ++中访问类的元素

时间:2015-04-06 01:40:29

标签: c++

我有一个名为Client的类就像这样

class Client
 {
  public:
      Client(unsigned int id, std::string nom, std::string prenom, float solde);

      unsigned int getId() const;
      std::string getNom() const;
      std::string getPrenom() const;
      float getSolde() const;

      bool operator< (Client& client);
      friend std::ostream& operator<< (std::ostream& os, const Client& client);

      bool diminutionSolde(float diminution);

   private:
      unsigned int id_;
      std::string nom_;
      std::string prenom_;
      float solde_;
};

我还有一篇类似的文章

class Article
{
public:
     Article(unsigned int id, std::string nom, float prix);

     unsigned int getId() const;
     std::string getNom() const;
     float getPrix() const;

     bool operator< (Article& article);
     friend std::ostream& operator<< (std::ostream& os, const Article& article);

private:
     unsigned int id_;
     std::string nom_;
     float prix_;
};

我还有另一个类(我认为没有必要显示)作为attribut的地图,

   std::map<Client , BasketArticles* > mapClientPanier_;

哪个BasketArticles作为列表&lt; T>作为attribut;

首先,我是否需要在客户端上使用指针?

然后,我如何逐个访问客户端文章以在屏幕上流式传输它们,如std :: cout&lt;&lt;

和/或pout客户端的名称和他在新地图中的文章(按字母顺序排列),然后是std :: cout&lt;&lt;这一切。

1 个答案:

答案 0 :(得分:0)

是否需要指针完全取决于如何构造BasketArticles类实例:负责实例化和销毁它们的内容。如果您的BasketArticles实例在其他地方实例化,并且您希望地图引用它们,那么显然您需要一个指针。否则,如果BasketArticles的实例应该只存在于地图中,那么最好避免使用指针,并让std::map负责实例化它们。