2015-04-06 6 views
0

У меня есть класс с именем клиента ведьма идет как этотКак получить доступ к элементу класса внутри карты C++

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 в виде списка < T> как атрибут;

Прежде всего, нужно ли использовать указатель на клиенте?

Тогда, как я получить доступ к клиентам статьи, по одному для потоковой передачи их на экране, как станд :: соиЬ < <

и/или дуться имя клиента и статьи он есть в новая карта (которая будет в алфавитном порядке), а затем std :: cout < < все это.

ответ

0

Независимо от того, нужен ли указатель, полностью зависит от того, как создаются экземпляры класса BasketArticles: что несет ответственность за создание и уничтожение их. Если экземпляр BasketArticles создается в другом месте, и вы хотите, чтобы карта ссылалась на них, очевидно, вам нужен указатель. В противном случае, если экземпляры BasketArticles должны существовать только на карте, тогда лучше избегать использования указателей и иметь std::map, ответственных за их экземпляр.

+0

-> и не могли бы вы помочь мне с проблемой доступа, это для меня важно, поскольку мне нужно сделать это в нескольких других методах(). –

+0

Ваш вопрос «как мне получить доступ к статьям клиентов» ничего не значит. У вас есть std :: map. Доступ к содержимому вашей std :: map не отличается от доступа к содержимому любой другой std :: map. Используйте итераторы, begin(), end(); или find(); или любой другой из обычных методов std :: map. \ –

Смежные вопросы