ServerObject类 - 允许从JSON消息

时间:2017-12-27 22:46:49

标签: c++ json templates inheritance

我有一个ServerCall类,它向服务器发送请求并接收JSON响应。我希望响应用于构建一个类型由模板参数定义的对象。

template<typename RetType>
class ServerCall
{
    const char *relative_uri;
public:
    ServerCall(const char *relative_uri);
    RetType doCall();
};

构建逻辑应该在每个派生类中实现。我想添加一个static_assert,声明模板参数必须是ServerObject类的派生类,并尝试强制派生类ServerObject以允许基于JSON消息进行构造,但我无法找到办法做到这一点。

  • 我无法在派生类上强制使用特定的构造函数签名,因此编译器无法确定模板参数是否具有RetType(const char *jsonMessage)构造函数。
  • 我不能拥有静态纯虚方法,因此不能强制派生类实现static ServerObject *buildFromJson(const char *jsonMessage)方法,并让编译器根据模板类型选择调用哪种方法。 / LI>
  • 我的另一个想法是使用我在Java中做的事情。在基类中声明一个private final数据成员,该成员仅在基类构造函数中初始化,因此派生类被强制调用基础构造函数来初始化数据成员。然后基础构造函数将调用派生类中实现的抽象方法 但我不认为它适用于C ++。即使我可以强制派生类构造函数调用基类构造函数(which doesn't seem possible),基类构造函数也不能调用纯虚方法。

我没有其他想法。有没有一种很好的方法从C ++中的JSON字符串构造模板类型的对象?

0 个答案:

没有答案