Closed SV-Guo-Liliang closed 8 months ago
我不确定,但你可以试试,在controller那个头文件里添加如下偏特化:
template <>
inline Enum_Type getHandlerArgumentValue<Enum_Type>(std::string &&p)
{
...
}
我不确定,但你可以试试,在controller那个头文件里添加如下偏特化:
template <> inline Enum_Type getHandlerArgumentValue<Enum_Type>(std::string &&p) { ... }
非常感谢。 我试过后好像不太行。这个getHandlerArgumentValue函数在HttpBinder.h,写在controller报错,不起作用。
等我试试,给你回复
我试了一下,可以工作,你要把转换的特化模板放到合适的namespace里,如下:
enum Stat
{
kNone=0,
kStart,
kEnd
};
namespace drogon::internal
{
template <>
inline Stat getHandlerArgumentValue<Stat>(std::string &&p)
{
if (p=="1") return kStart;
if (p=="2") return kEnd;
return kNone;
}
}
class TestCtrl : public drogon::HttpController<TestCtrl>
{
public:
METHOD_LIST_BEGIN
ADD_METHOD_TO(TestCtrl::test, "/test/{1}", Get); // path is /absolute/path/{arg1}/{arg2}/list
METHOD_LIST_END
void test(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, Stat s) const;
};
👍感谢大佬,OK了 防止疑惑:此方法只能在v1.9.1以及以后可以使用
我在用doxygen生成文档,用int来接收当然可以,但是文档不能生成关联枚举的说明