У нас проблемы с включением формы входа в наш проект.
Мы следуем за шагами в 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.
Спасибо за вашу помощь
Какой метод «нагрузки» следует использовать?
один из класса «base_html_input» или один из «base_text». Есть 2 метода с именем «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», которая возвращает объекты с правильной реализацией, в любом случае статья с учебником неверна).
Других решений пока нет …