Konstantin Nikitin #: Вполне работает. Даже интересно в чем проблема вашего кода.
Не работает. Просто попробуйте назвать функцию f_Print, а потом уже из неё вызвать оригинальный Print. Я просто не хочу переписывать оригинальную функцию, а просто хочу описать нужную мне функцию в моей библиотеке. Потом в своём советнике заменить Print на f_Print и всё. Чтобы при желании, я потом вернуть всё назад.
Нет. Я хочу просто временно переименовать функцию Print в f_Print без добавления лишнего кода (вроде ToString). А потом, при необходимости, просто переименовать обратно. Фактически, я хочу сделать обёртку над Print. В более современном C++ я бы просто использовал троеточие, а тут...
Konstantin Nikitin #: Такой вариант работает. Похоже с шаблонами не получается просто.
Вы либо издеваетесь, либо я на каком то другом языке разговариваю. Допустим есть код
int x=1;
bool ok = f();
if(ok)
Print("всё хорошо");
elsePrint("всё сломалось");
Print("X: ", x);
Я хочу просто, не меняя особо кода заменить его на
int x=1;
bool ok = f();
if(ok)
f_Print("всё хорошо");
else
f_Print("всё сломалось");
f_Print("X: ", x);
Выше подключается моя библиотека, в которой и реализована эта функция f_Print А потом, я просто автозаменой меняю f_Print на Print, удаляю подключение своей библиотеки и получаю обычный код. Да, задача специфичная. На современном c++ я бы это сделал просто, а вот здесь - проблема. P.S. Аргументов может быть очень много, а может быть и 1. Должна получиться просто обёртка с аналогичным функционалом, без переписывания всего.
Фантазии это хорошо..Нет таких проблем какие мы не можем себе создать
---
А case где нужна/востребована "функция с переменным числом произвольных параметров" кто-нить представил ? примерное назначение и устройство этой функции ??
Единственный живой пример - вывод в журнал и тому подобное. Но для такого даже в C++ перегружают операторы << и считают за счастье (это при том что vararg там есть у них)
Можно и тут также сделать, вместо функции будет потоковый "комбайн" через << или редко используемый ~
программисту какая разница что писать Foo(a,b,c,d) или Foo()<<a<<b<<c<<d<<TheEnd() ??
второй вариант редко но удобнее - можно избежать временных переменных и пихать аргументы по мере готовности в несколько приёмов. И может быть расширен (ещё одной перегрузкой <<) без правки кода Foo()
и компилятору удобнее знать что типы конкретны.
Потребности в этой фиче про произвольные аргументы я не вижу..
Вполне работает. Даже интересно в чем проблема вашего кода.
Хотя конечно не вариант. Смысл лишний костыль делать, если и напрямую можно сделать Print и все.
Чисто ради интереса решил написать данный вариант сейчас.
Может так:
Вполне работает. Даже интересно в чем проблема вашего кода.
Не работает. Просто попробуйте назвать функцию f_Print, а потом уже из неё вызвать оригинальный Print.
Я просто не хочу переписывать оригинальную функцию, а просто хочу описать нужную мне функцию в моей библиотеке. Потом в своём советнике заменить Print на f_Print и всё. Чтобы при желании, я потом вернуть всё назад.
Может так:
Нет. Я хочу просто временно переименовать функцию Print в f_Print без добавления лишнего кода (вроде ToString). А потом, при необходимости, просто переименовать обратно.
Фактически, я хочу сделать обёртку над Print. В более современном C++ я бы просто использовал троеточие, а тут...
Вполне работает. Даже интересно в чем проблема вашего кода.
Можете переписать ваш шаблон так
И увидеть, что "Test:" не выведется. Вы просто описали одноимённую функцию Print, но вызываете оригинальную.
Можете переписать ваш шаблон так
И увидеть, что "Test:" не выведется. Вы просто описали одноимённую функцию Print, но вызываете оригинальную.
Такой вариант работает. Похоже с шаблонами не получается просто.
Вы либо издеваетесь, либо я на каком то другом языке разговариваю.
Допустим есть код
Я хочу просто, не меняя особо кода заменить его на
Выше подключается моя библиотека, в которой и реализована эта функция f_Print
А потом, я просто автозаменой меняю f_Print на Print, удаляю подключение своей библиотеки и получаю обычный код.
Да, задача специфичная. На современном c++ я бы это сделал просто, а вот здесь - проблема.
P.S. Аргументов может быть очень много, а может быть и 1. Должна получиться просто обёртка с аналогичным функционалом, без переписывания всего.
Фантазии это хорошо..Нет таких проблем какие мы не можем себе создать
---
А case где нужна/востребована "функция с переменным числом произвольных параметров" кто-нить представил ? примерное назначение и устройство этой функции ??
Единственный живой пример - вывод в журнал и тому подобное. Но для такого даже в C++ перегружают операторы << и считают за счастье (это при том что vararg там есть у них)
Можно и тут также сделать, вместо функции будет потоковый "комбайн" через << или редко используемый ~
программисту какая разница что писать Foo(a,b,c,d) или Foo()<<a<<b<<c<<d<<TheEnd() ??
второй вариант редко но удобнее - можно избежать временных переменных и пихать аргументы по мере готовности в несколько приёмов. И может быть расширен (ещё одной перегрузкой <<) без правки кода Foo()
и компилятору удобнее знать что типы конкретны.
Потребности в этой фиче про произвольные аргументы я не вижу..
В самой функции Print эту проблему ведь обошли, без "киньте пустое значение".
так она и не на mql написана.
В самописном придется писать 64 варианта функции похоже