我在下面(用Kotlin写),一切都很好
template <typename T>
void ExecQuery()
{
static_assert(std::is_base_of<DBEntity, T>(), "a Class should inherit from DBEntity");
const auto& props = entity->GetPropsMeta();
auto row = GetData(props);
T entity = new T();
for (const auto& colName : row.Columns)
{
string val = row[colName];
// TODO: SET ENTITY'S PROPERTY colName with val
}
}
#define ENTITIY_PROP(Class, Type, Name) \
private: \
int _##Name; \
public: \
class Property_##Name { \
public: \
Property_##Name(Class* parent) : _parent(parent) \
{ \
_parent->SetPropMeta(#Name, #Type); \
} \
Type operator = (Type value) \
{ \
_parent->Set##Name(value); \
return _parent->Get##Name(); \
} \
operator Type() const \
{ \
return static_cast<const Class*>(_parent)->Get##Name(); \
} \
Property_##Name& operator =(const Property_##Name& other) \
{ \
operator=(other._parent->Get##Name()); return *this; \
}; \
Property_##Name(const Property_##Name& other) = delete; \
private: \
Class* _parent; \
} Name { this }; \
\
Type Get##Name() const { return _##Name; } \
void Set##Name(int value) { _##Name = value; } \
class DBEntity
{
private:
std::unordered_map<std::string, std::string> _propsMeta;
public:
const std::unordered_map<std::string, std::string>& GetPropsMeta() { return _propsMeta; }
};
但是,我正在尝试制定一个客户计划(即使用“ myprotocol”而不是“ http”)。
val url = URL("http://my-page/content?page=0")
它将崩溃val url = URL("myprotocol://my-page/content?page=0")
有没有办法让我允许自定义协议? 即,我想使用与普通URL格式相同的格式,因此我可以提取路径,查询等,但协议(方案)是自定义的。
答案 0 :(得分:0)
@JBNizet的答案很完美。只需使用
val url = URI("http://my-page/content?page=0")