/
RedResistance
/
JSonMall
Обзор
Документация
Войти
/
RedResistance
/
JSonMall
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.cpp
135 строк
3 KB
Domovoi-Kuzma
templates
27 июл 2025, 01:22
27 июл 2025, 01:22
1c9b251
Код
Авторство
О чём код?
#include "json/scalar_factory.h" #include "json/array_factory.h" #include "json/object_factory.h" #include "json/reader.h" using namespace std; /*class base { public: virtual void print() { cout << __FUNCTION__ << endl;} }; class a : public base { public: virtual void print() { cout << __FUNCTION__ << endl;} }; class b : public base { public: virtual void print() { cout << __FUNCTION__ << endl;} }; class carray : public base { std::vector<base*> v; std::function<base* ()> maker; public: virtual void print() { cout << __FUNCTION__<< " containing..." << endl; for (auto ptr : v) { ptr->print(); } } template <typename T> void registerMaker() { maker = []() {return new T; }; } void push() { v.push_back(maker()); } };*/ class inner_object { int first, second, third; friend class inner_object_factory; }; class sample_object { vector<int> i; vector<string> s; inner_object o; friend class sample_object_factory; }; class inner_object_factory : public json::object_factory { json::scalar_factory *first, *second, *third; public: inner_object_factory() { registerFieldFactory("1", first = new json::scalar_factory); registerFieldFactory("2", second = new json::scalar_factory); registerFieldFactory("3", third = new json::scalar_factory); } inner_object getResult() { inner_object retval; retval.first = first->asInt(); retval.second = second->asInt(); retval.third = third->asInt(); return retval; } }; class sample_object_factory : public json::object_factory { json::array_factory<json::scalar_factory> *i, *s; inner_object_factory* o; public: sample_object_factory() { registerFieldFactory("int", i = new json::array_factory<json::scalar_factory>); registerFieldFactory("string", s = new json::array_factory<json::scalar_factory>); registerFieldFactory("object", o = new inner_object_factory); } sample_object getResult() { sample_object retval; retval.i = a->asInt(); retval.o = o->getResult(); return retval; } }; /*class base { public: virtual void print() { std::cout << "base" << std::endl; }; }; class int_b: public base { public: virtual void print() { cout << "int_b" << endl; }; }; class str_b : public base { public: virtual void print() { cout << "str_b" << endl; }; }; template <typename T> class arr_b : public base { public: vector<T*> vec; virtual void print() { cout << "arr_b [" << endl; for (T* i : vec) i->print(); cout << "] b_rra" << endl; }; }; int main() { arr_b<int_b>* my_array1 = new arr_b<int_b>; arr_b<str_b>* my_array2 = new arr_b<str_b>; my_array1->vec.push_back(new int_b); my_array1->vec.push_back(new int_b); my_array2->vec.push_back(new str_b); my_array1->print(); my_array2->print(); return 0; } */ int main() { try { ifstream file("config.txt"); json::scalar_factory fac; cout << fac.asInt() << endl; } catch (string error) { cerr << "error1 " << error << endl; } catch (const char* error) { cerr << "error2 " << error << endl; } return 0; }