سلام.
من برای سریالایز کردن vector<T> مشکلی ندارم ولی اگر shared_ptr<T> استفاده کنم خطا میده.
class VariR {
public:
VariR(){}
VariR(int id,const std::string& title,int group):
id_{id},
title_{ title },
group_{ group }{
}
int id_;
std::string title_;
int group_;
void print() {
cout << "id:" << id_ << endl;
cout << "title:" << title_ << endl;
cout << "group:" << group_ << endl;
}
};
using VariRP = std::shared_ptr< VariR>;
void to_json(json& j, const VariR& p)
{
j = { {"id", p.id_}, {"region", p.region_} , {"title", p.title_}, {"group", p.group_} };
}
void from_json(const json& j, VariR& p)
{
j.at("id").get_to(p.id_);
j.at("title").get_to(p.title_);
j.at("group").get_to(p.group_);
}
template<typename T>
class Model1 {
public:
using TP = std::shared_ptr<T>;
using TPS = std::vector<TP>;
using TS = std::vector<T>;
TPS items_;
void print() {
cout << "model items:" << endl;
for (auto item : items_)
item->print();
}
};
using VariModel = Model1<VariR>;
static inline void to_json(json& j, const VariModel& p)
{
j = { {"vari_model", p.items_} };
}
static inline void from_json(const json& j, VariModel& p)
{
j.at("vari_model").get_to(p.items_);
}