Сообщение Re: Передача объекта, возвращаемого функцией, в другую функц от 27.09.2019 4:36
Изменено 27.09.2019 5:01 DDDX
Re: Передача объекта, возвращаемого функцией, в другую функцию.
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Привет всем.
Тут одна мысль посетила, благодаря rg45
Когда Conformance Mode=Yes, пример не компилируется:
Как я тут уже отмечал
Можно передавать add_error, чтобы он получал указатель на errs. Тоже работает:
Как по мне, вариант со ссылкой выглядел лучше.
КД>Привет всем.
Тут одна мысль посетила, благодаря rg45
Автор: rg45
Дата: 26.09.19
. Но я решил с ней повременить.Дата: 26.09.19
И привести нормальный пример описываемой проблемы (VS2019) | |
| |
Как это сейчас модно говорить, Real World Code (RWC) выглядит так: | |
| |
Когда Conformance Mode=Yes, пример не компилируется:
Error C2664 'void add_error(t_errors &,const int)': cannot convert argument 1 from 't_context::tag_errs_without_limits' to 't_errors &'
Error C2664 'void add_error(t_errors &,const int)': cannot convert argument 1 from 't_context::tag_errs_with_limits' to 't_errors &'
Как я тут уже отмечал
Автор: Коваленко Дмитрий
Дата: 26.09.19
, ошибку компиляции можно задавить с помощью *& :Дата: 26.09.19
add_error(*&ctx.get_errors_without_limits(),1);
add_error(*&ctx.get_errors_with_limits(),2);
Можно передавать add_error, чтобы он получал указатель на errs. Тоже работает:
void add_error(t_errors* errs,int const errCode);
//...
add_error(&ctx.get_errors_without_limits(),1);
add_error(&ctx.get_errors_with_limits(),2);
//...
Как по мне, вариант со ссылкой выглядел лучше.
Re: Передача объекта, возвращаемого функцией, в другую функц
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Привет всем.
Тут одна мысль посетила, благодаря rg45
Когда Conformance Mode=Yes, пример не компилируется:
Как я тут уже отмечал
Можно переделать add_error, чтобы он получал указатель на errs. Тоже компилируется с предупреждениями 4-го уровня:
Как по мне, начальный вариант со ссылкой выглядел лучше.
КД>Привет всем.
Тут одна мысль посетила, благодаря rg45
Автор: rg45
Дата: 26.09.19
. Но я решил с ней повременить.Дата: 26.09.19
И привести нормальный пример описываемой проблемы (VS2019) | |
| |
Как это сейчас модно говорить, Real World Code (RWC) выглядит так: | |
| |
Когда Conformance Mode=Yes, пример не компилируется:
Error C2664 'void add_error(t_errors &,const int)': cannot convert argument 1 from 't_context::tag_errs_without_limits' to 't_errors &'
Error C2664 'void add_error(t_errors &,const int)': cannot convert argument 1 from 't_context::tag_errs_with_limits' to 't_errors &'
Как я тут уже отмечал
Автор: Коваленко Дмитрий
Дата: 26.09.19
, ошибку компиляции можно задавить с помощью *&. Но вылезут предупреждения 4-го уровня:Дата: 26.09.19
add_error(*&ctx.get_errors_without_limits(),1); //warning C4238: nonstandard extension used: class rvalue used as lvalue
add_error(*&ctx.get_errors_with_limits(),2); //warning C4238: nonstandard extension used: class rvalue used as lvalue
Можно переделать add_error, чтобы он получал указатель на errs. Тоже компилируется с предупреждениями 4-го уровня:
void add_error(t_errors* errs,int const errCode);
//...
add_error(&ctx.get_errors_without_limits(),1); //warning C4238: nonstandard extension used: class rvalue used as lvalue
add_error(&ctx.get_errors_with_limits(),2); //warning C4238: nonstandard extension used: class rvalue used as lvalue
//...
Как по мне, начальный вариант со ссылкой выглядел лучше.