Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Метод десериализации
- template<typename type>
- void WalletList<type>::createWalletsFromJson ( nlohmann::json &data ) {
- for ( auto& element : data )
- {
- Money wallet = Money (element["Currency"].get<std::string>(), element["Summ"].get<long>());
- std::cout << wallet.getCurrency() << " " << wallet.getSum() << std::endl;
- this->addElement(wallet);
- std::cout << (*this)[0]->getCurrency() << " " << (*this)[0]->getSum() << std::endl;
- }
- }
- // Код выше срабатывает как нужно, последнняя строка - перегруженный оператор,
- // который достает элемент из СПИСКА по индексу, а это значить что объект добавлен и я могу его достать
- // Оператор индексирования
- template<typename type>
- type* List<type>::operator[] ( const int i ) {
- int j = 0;
- DataStruct<type>* element = this->head;
- while( element ) {
- if ( i == j ) { return &(element->data); }
- element = element->next;
- j++;
- }
- return nullptr;
- }
- // Значить проблема возникает когда я пытаюсь вытащить объект из списка в другом месте?
- // Вытаскиваю вот так:
- std::map<std::string, long> wallets = account.walletList.getWallets();
- for (auto&item : wallets ) {
- cout << item.first << " : " << item.second << endl;
- // При попытке вывести - выводятся только значения, но не ключи
- // То есть сумму я получить могу и валюту-нет
- }
- // Методы возвращающие информацию о кошельке
- const std::string Money::getCurrency() {
- return this->Currency;
- }
- const long Money::getSum() {
- return this->Summ;
- }
- // Реализация метода getWallets()
- template<typename type>
- std::map<std::string, long> WalletList<type>::getWallets() {
- std::map<std::string, long> wallets;
- DataStruct<type>* element = this->head;
- while( element != nullptr ) {
- std::cout <<element->data.getCurrency() << " " << element->data.getSum() << std::endl;
- wallets[element->data.getCurrency()] = element->data.getSum();
- element = element->next;
- } return wallets;
- }
- // Вот здесь я уже не могу получить валюту, а сумму по прежнему могу
- // Так же (просто для теста) пытался достать вот так:
- cout << "Валюта: " << account.walletList[0]->getCurrency() << endl;
- cout << "Сумма: " << account.walletList[0]->getSum() << endl;
- // Результат такой же - сумма есть, валюты нет.
- // Но если бы объект не существовал, то все крашилось бы, я проверял)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement