2

我们在项目中包含登录表单时遇到了麻烦。我们按照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::widgets::base_widget::render_input'

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

我们使用的是 1.0.3 版本的 CppCMS。

谢谢你的帮助

4

1 回答 1

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”对象工厂,即返回具有正确实现的对象,无论如何教程中的文章都是错误的。)

于 2013-01-22T19:49:00.573 回答