Advertisement
DmitryPythonDevelop

Untitled

Apr 18th, 2020
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. // Метод десериализации
  2. template<typename type>
  3. void WalletList<type>::createWalletsFromJson ( nlohmann::json &data ) {
  4.     for ( auto& element : data )  
  5.     {
  6.         Money wallet = Money (element["Currency"].get<std::string>(), element["Summ"].get<long>());
  7.         std::cout << wallet.getCurrency() << " " << wallet.getSum() << std::endl;
  8.         this->addElement(wallet);
  9.         std::cout << (*this)[0]->getCurrency() << " " << (*this)[0]->getSum() << std::endl;
  10.     }
  11. }
  12.  
  13. // Код выше срабатывает как нужно, последнняя строка - перегруженный оператор,
  14. // который достает элемент из СПИСКА по индексу, а это значить что объект добавлен и я могу его достать
  15.  
  16. // Оператор индексирования
  17. template<typename type>
  18. type* List<type>::operator[] ( const int i ) {
  19.     int j = 0;
  20.     DataStruct<type>* element = this->head;    
  21.     while( element ) {
  22.         if ( i == j ) { return &(element->data); }
  23.         element = element->next;
  24.         j++;
  25.     }
  26.     return nullptr;
  27. }
  28.  
  29.  
  30. // Значить проблема возникает когда я пытаюсь вытащить объект из списка в другом месте?
  31. // Вытаскиваю вот так:
  32. std::map<std::string, long> wallets = account.walletList.getWallets();
  33. for (auto&item : wallets ) {
  34.     cout << item.first << " : " << item.second << endl;
  35.     // При попытке вывести - выводятся только значения, но не ключи
  36.     // То есть сумму я получить могу и валюту-нет
  37. }
  38.  
  39. // Методы возвращающие информацию о кошельке
  40. const std::string Money::getCurrency() {
  41.     return this->Currency;
  42. }
  43. const long Money::getSum() {
  44.     return this->Summ;
  45. }
  46.  
  47.  
  48. // Реализация метода getWallets()
  49. template<typename type>
  50. std::map<std::string, long> WalletList<type>::getWallets() {
  51.     std::map<std::string, long> wallets;
  52.  
  53.     DataStruct<type>* element = this->head;
  54.     while( element != nullptr ) {
  55.         std::cout <<element->data.getCurrency() << " " << element->data.getSum() << std::endl;
  56.         wallets[element->data.getCurrency()] = element->data.getSum();
  57.         element = element->next;
  58.     } return wallets;
  59. }
  60. // Вот здесь я уже не могу получить валюту, а сумму по прежнему могу
  61. // Так же (просто для теста) пытался достать вот так:
  62. cout << "Валюта: " << account.walletList[0]->getCurrency() << endl;
  63. cout << "Сумма: " << account.walletList[0]->getSum() << endl;
  64. // Результат такой же - сумма есть, валюты нет.
  65. // Но если бы объект не существовал, то все крашилось бы, я проверял)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement