我有一个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>
private final
数据成员,该成员仅在基类构造函数中初始化,因此派生类被强制调用基础构造函数来初始化数据成员。然后基础构造函数将调用派生类中实现的抽象方法
但我不认为它适用于C ++。即使我可以强制派生类构造函数调用基类构造函数(which doesn't seem possible),基类构造函数也不能调用纯虚方法。我没有其他想法。有没有一种很好的方法从C ++中的JSON字符串构造模板类型的对象?