gpt4 book ai didi

c++ - 将具有一组不同数据成员的 json 文件表示为 C++ 类

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:09 26 4
gpt4 key购买 nike

我想解析一个 json 文件,其中一些元素每次都是通用的,而另一些元素则因类型而异。例如消息 json:

{
"title": string,
"body": string,
"type": int (0 for email, 1 for sms, 2 for terminal)
"typeProperties": {
// Different based on type value
}
}

我应该使用继承来将 json 表示为 C++ 吗?我应该每次都使用工厂方法来实例化适当的类吗?有没有其他推荐的方法?

class Message {
public:
std::string title;
std::string body;
int type; // 0 - Email, 1 - SMS, 2 - Terminal
};

class Email : public Message {
public:
std::vector<std::string> emailRecipients;
std::vector<std::string> emailCC;
};

class Sms : public Message {
public:
std::string phoneNumber;
};

class Terminal : public Message {
public:
int terminalId;
};

我可以使用基类对象的容器并以某种方式访问​​基于类型的特定数据成员吗?

std::vector<Message> messages;

最佳答案

您可以使用变体(http://en.cppreference.com/w/cpp/utility/varianthttp://www.boost.org/doc/libs/1_64_0/doc/html/variant.html)

或者通过设置整数类型来手动跟踪类型。然后你可以声明 std::vector<Message*> messages; (指向基类的指针 vector )和 dynamic_cast根据 Message::type 的值将它们转换为适当的类型

关于c++ - 将具有一组不同数据成员的 json 文件表示为 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com