Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Post your project for free and start receiving proposals from freelancers within minutes after publication!

C++ верификация сериализации класса.

7 USD

Applications 1

Application viewing is only available registered users.
    Another 2 proposals concealed
  • Profile deleted
    26 September 2019, 23:46 |

    Необходимо реализовать Comparison and Copy assignment operator класса 

    Какой класс имеется в виду?

    Вот такая реализация:

    class T {
    ...
    bool operator == (const T& other) const
     { return memcmp(this, &other, sizeof(*this)) = 0; }
    T(const T& other) { memcpy(this, &other, sizeof(*this)); }
    ...
    }

    Подойдёт? 🙂)

    PS: ни один компилятор при написании данного кода не пострадал 🙂

  • Alex Karp Стартап
    27 September 2019, 20:55 |

    В вашем коде я увидел оператор сравнения и копи конструктор. Так что этот код не подойдет).

  • Sergey Nazarenko
    28 September 2019, 21:37 |

    Скажите, а Вам нужно сравнивать и присваивать какой-то конкретный класс? Или нужно универсальное решение?

  • Alex Karp Стартап
    28 September 2019, 21:59 |

    Это нужно для конкретного класса с мемберами.

  • Sergey Nazarenko
    28 September 2019, 22:01 |

    Так может Вы определение класса приложите (из h-файла)?

    А то ща подпишемся за 300 грн на Вашу задачу, а там окажется сто-пятсот мемберов, которые сами являются классами, внутри которых хранятся классы, и все это с перекрестными ссылками... и там работы на 10 лет.

  • Alex Karp Стартап
    28 September 2019, 22:00 |

    Можете так же ответить на следующие вопросы: есть ли опыт компиляции под Linux, опыт написания UI (wxWidgets ), написания клиент-серверных приложений и готовы ли к оплате труда после того как решение пройдет кодревью? Задачек много и разных.

  • Sergey Nazarenko
    28 September 2019, 22:06 |

    Опыт компиляции под Linux есть, но ему уже около 20 лет и я уже и не вспомню как этот Linux установить, не то, что там что-то компилировать 😔
    wXWidgets - даже не слышал о таком.
    Опыт написания клиент-серверных приложений есть небольшой, но тоже давненько это было.
    Так что пойду я, наверное, мимо этой задачи.


    Оплата после код-ревью - вполне нормально, если заказчику доверяешь. Не знаю почему, но к Вам у меня пока доверия нет.


    А вообще, все эти нюансы нужно было с самого начала в тексте задачи указать.
    Сэкономили бы много времени себе и людям.
    Всего доброго.

  • Profile deleted
    28 September 2019, 23:19 |

    Задачек много и разных 

    Отлично! Ради этого мы все здесь и собрались 🙂

    Задачи целесообразно формировать отдельными проектами, где чётко прописывать все особенности выполнения: и исполнителям проще будет понять, что требуется/ожидается, и вам, как заказчику, по откликам будет понятно, кто вам подходит.

    Так что ждём-с 🙂

  • Alex Karp Стартап
    29 September 2019, 0:41 |

    Добавил архив с описанием класса.

  • Alex Karp Стартап
    29 September 2019, 0:52 |

    Уточняю, текущая задача требует только базовых знаний C++. Дополнительные вопросы, которые я задал помогут мне только в выборе исполнителя(ей) для возможного долгосрочного сотруднечиства.

  • Profile deleted
    29 September 2019, 1:20 |

    Было бы отлично ещё уточнить постановку задачи, потому что необходимость в copy assignment operator выглядит неочевидной в контексте тестирования сериализации.

    А comparison operator имеет смысл делать в такой манере:

    void operator == (const T& other) {
      std::stringstream ss1;
      boost::archive::text_oarchive oa1{ss1}; 
      oa1 << *this;
      std::stringstream ss2;
      boost::archive::text_oarchive oa2{ss2}; 
      oa2 << other;
      return ss1 == ss2;
    }

    Это, конечно, то ещё курощение, но позволит избавиться от copy'n'paste. И если это только для тестов, то ... пойдёт 🙂

    Вообще это всё можно засунуть поглубже в ... unit-test, чтоб кто-то случайно не начал использовать в production 🙂

  • Alex Karp Стартап
    29 September 2019, 9:35 |

    Обновил описание задачки.

  • Profile deleted
    29 September 2019, 10:20 |
    BaseClass* mock_inst;// наследник от BaseClass который инициализирует мемберы тестовыми данными
    BaseClass* test_inst;
    
    test_inst = mock_inst; 

    Наверное, последнее присваивание должно быть в таком виде:

    *test_inst = *mock_inst; 

    Но и после этого непонятно, зачем оно в unit-test'е 🙂

    В контексте вашего толстого класса SlotBase оператор присваивания как и оператор копирования имеет смысл вообще запретить (потому что у вас там намечается толпа потомков), и если нужна копия объекта (но опять же вопрос - зачем?), то думать в направлении "клонирования":

    SloteBase* clone() const;

    PS: не сразу заметил, что у вас все data members сделаны protected - it's just a bad idea 🙂

  • Alex Karp Стартап
    29 September 2019, 10:39 |

    В описании задачи нет запроса на поиск решения. Прошу, прекратить предлагать не работающий код.

  • Sergey Nazarenko
    29 September 2019, 11:30 |

    Я так понимаю, что Алекс как раз и хочет, чтобы ему сделали оператор присваивания, который будет грамотно весь айсберг всю иерархию аккуратно рекурсивно копировать, заменяя ссылки на данные ссылками на копии этих данных.
    Ну и оператор сравнения ему аналогичный нужен. Чтобы он не ссылки сравнивал, а данные в этих ссылках. Причем, рекурсивно по всей иерархии вложенных объектов.

    И все это за 300 грн!

    Алекс. У Вас есть шанс найти исполнителя, который Вам сделает эту задачу, если Вы в бюджет пару нулей справа допишете.

  • Alex Karp Стартап
    29 September 2019, 12:05 |

    Там нет не ссылок не рекурсии, вы почему то любите все усложнять и драматизировать. Сергей, эта задача не для вас.

  • Sergey Nazarenko
    29 September 2019, 13:58 |

    То, что я не умею пользоваться компилятором под Линукс еще не говорит, что я ничего не понимаю в С++.


    Если там нет ссылок и вложенных объектов, то чем Вам memcpy не подходит?


    И я хоть и не Сеньйор С++, но имеющихся у меня знаний достаточно, чтобы понимать, что вот это все

            std::vector<array_2d_t> m_view_symbols{};

            std::vector<int> m_wild_sticky{};

            array_2d_t m_view_symbols_prev{};

            std::vector<unsigned> m_stop_numbers_from_file;

            std::function<int(SlotBase&, unsigned)> m_get_stop_number_func;

            std::vector<std::vector<std::string>> m_symbols_names;

            std::vector<array_2d_t> m_paytable{};

            array_2d_t m_lines_combinations;

            array_1d_t<int> m_reels_stops;

            array_1d_t<int> m_free_game_scatter_multiplier_table;

            array_1d_t<int> m_scatter_multiplier_table;

            array_1d_t<int> m_wild_multiplier_table;

            array_1d_t<int> m_bonus_multiplier_table;

            array_1d_t<int> m_free_game_table;

            array_1d_t<int> m_bonus_game_table;

            array_1d_t<bool> m_bonus_on_any_pay_line;

            std::string    m_game_id;

            std::vector<array_2d_t> m_reels_collection{};

            std::string m_file_name;

            std::vector<int> m_scatter_number{};

            std::vector<int> m_wild_number{};

            std::vector<int> m_bonus_number{};

            std::vector<int> m_free_games_multiplier_table{}; 

            std::unordered_map<std::string, std::string> m_bonus_game_result;

            std::vector<array_1d_t<int>> m_wild_for_table;

            mutable std::vector<std::vector<std::vector<double>>> m_symbol_money;

            mutable std::vector<array_2d_t> m_game_symbols_hit_rate;

            mutable std::vector<double> m_games_money{ 0.0 }; 

            mutable std::vector<double> m_games_max_win{ 0.0 };

            mutable std::vector<long long> m_games_hit_rate{ 0 };

            mutable std::vector<long long> m_total_num_of_games{ 0 };

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

  • Alex Karp Стартап
    29 September 2019, 15:19 |

    Предположу, что смущает array_2d_t, array_1d_t. Так что добавлю следующее описание:


    using array_2d_t = std::vector<std::vector<int>>;

    template<typename dataT>
    using array_1d_t = typename std::vector<dataT>;


    Но опять таки, Сергей эта задача не для вас. Не тратьте свое и мое время.

  • Sergey Nazarenko
    29 September 2019, 15:23 |

    Судя по бюджету задачи, там работы менее, чем на 1 час.
    Судя по Вашим комментариям - Вы лучше нас разбираетесь в задаче.
    Вы уже значительно больше времени потратили на создание этой задачи и ее обсуждение.
    Почему бы Вам самому ее не сделать?

  • Alex Karp Стартап
    29 September 2019, 15:37 |

    Абсолютно верно, работы на 1-2 часа. И я действительно потратил больше времени на обсуждение, но как я уже говорил простых задачек много и нужно найти человека, который потихоньку бы их делал, а я в это время смог решать другие задачи. Так, что надеюсь найти компетентного исполнителя и готов на это потратить столько времени сколько понадобится.

  • Profile deleted
    29 September 2019, 17:03 |

    в этом списке единственный data member, возможно, потребует особого обращения:

    std::function<int(SlotBase&, unsigned)> m_get_stop_number_func; 

    Всё остальное можно сделать типичным присваиванием и сравнением.

    Подобная задачка сводится по сути к "набору текста", что заказчик мог бы и указать в формулировке - это сэкономило массу времени всем незаинтересованным сторонам 🙂

Current freelance projects in the category C & C++

Reverse engineering of console utilities for querying SSD controllers (Flash ID)

1. Purpose of the work Extraction of the application programming interface (API) for interaction with SSD/NVMe controllers from the provided set of console utilities (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron, etc.). The result should be working code in C/C++…

C & C++Desktop Apps ∙ 5 days 1 hour back ∙ 5 proposals

Development of a Minecraft Java Seed Map / Seed Viewer for the website

Development of Minecraft Java Seed Map / Seed Viewer for the websiteProject Description A browser-based tool Minecraft Java Seed Map / Seed Viewer needs to be developed, which will work on our website and allow the user to enter a seed from Minecraft Java Edition and view an…

C & C++HTML & CSS ∙ 5 days 8 hours back ∙ 14 proposals

Comparative analysis of the effectiveness of custom software (v2.2-field) and reference software (Meshtastic v2.x)

22 USD

Comparative analysis of the effectiveness of custom software (v2.2-field) and reference software (Meshtastic v2.x) on the identical hardware platform (ESP32 + SX1268, 2W) based on the criteria of range, throughput, link stability, and power consumption. Conduct tests with…

C & C++C# ∙ 9 days 15 hours back ∙ 2 proposals

Consultation and audit of the current project on Odoo 19 Community Edition

We are looking for an Odoo Developer — a solo developer with experience in Odoo 19 Community Edition, including using Claude Code. We need a specialist who has successfully implemented projects in Odoo and practical experience in development using Claude Code. Important: we only…

C & C++Javascript and Typescript ∙ 12 days 17 hours back ∙ 8 proposals

Software development for Arduino (RF modules 3–7.5 GHz, automatic frequency scanning)

It is necessary to develop a system on Arduino for the automatic search of active analog video signals and the automatic tuning of the transmitter to the detected frequency.It is planned to use three separate transceiver modules: 3000–4200 MHz; 4900–6000 MHz; 6100–7500…

C & C++Embedded Systems & Microcontrollers ∙ 13 days 17 hours back ∙ 5 proposals

Client
Alex Karp Стартап
Ukraine Kyiv
Project published
6 years back
114 views
Tags