在CppCMS中使用表单构建错误

时间:2013-01-22 19:15:45

标签: c++ forms cppcms

我们在项目中遇到包括登录表单在内的麻烦。 我们按照http://cppcms.com/wikipp/en/page/cppcms_1x_forms

中的步骤操作

这是表格的定义:

struct SignInFormInfo : public cppcms::form {
/* Error 1 */ cppcms::widgets::text user_name;
/* Error 2 */ cppcms::widgets::password password;
cppcms::widgets::submit submit;

SignInFormInfo() {
user_name.message("User name");
password.message("Password");
submit.value("Sign in");

add(user_name);
add(password);
add(submit);

// Restrictions
user_name.limits(1, 31);
password.non_empty();
}
};

我们得到了这些构建错误:

错误1:类型'cppcms :: widgets :: text'必须实现继承 纯虚方法'cppcms :: base_form :: load'

错误2:类型'cppcms :: widgets :: password'必须实现 继承了纯虚方法 'cppcms ::部件:: base_widget :: render_input'

我们也在cppcms库“cppcms / form.h”中得到错误 “booster / hold_ptr.h”关于变量“_data”是私有的。

我们正在使用1.0.3版本的CppCMS。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

应该使用哪种“加载”方法?

“base_html_input”类中的一个或“base_text”中的一个。有两个名为“load”的方法来自不同的类(并且都来自同一个类!),它们都是同一个类的基类。编译器根本不知道要使用哪一个。最好的办法是实现自己的“负荷”。

widgets::text::load(param) //actually missing in CPPCMS
{
     //wich one of the 2 methods has to be called.. or both have to be called?
     base_html_input.load(param)
     base_text input.load(param);
}

这可能是你正在使用的库的一个设计缺陷(除非某处有一个“widgets :: text”对象的工厂,即返回具有正确实现的对象,无论如何,本教程的文章都是错误的。)