在CppCMS中构建表单错误

Build error with forms in CppCMS

本文关键字:表单 错误 构建 CppCMS      更新时间:2023-10-16

我们在项目中遇到了包括登录表单在内的问题。我们遵循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"answers"booster/hold_ptr.h"关于变量"_data"是私有的。

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

谢谢你的帮助

应该使用哪种"load"方法?

一个来自"base_html_input"类或一个来自"base_text"。有两个名为"load"的方法来自不同的类(并且都是从同一个类派生的!),它们都是同一个类的基类。编译器根本不知道该使用哪一个。最好的方法是实现你自己的"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"对象的工厂,即返回具有正确实现的对象,无论如何教程的文章是错误的)