Название: Подстновка функции в саму себя Отправлено: kuzulis от Август 28, 2009, 13:51 Доброго времени суток!
Например имеется функция : int read(char* data, int len) и её нужно подставить в саму себя Код: int read(char* data, int len) { //№1 т.е. чтобы не реализовывать новую функцию №2 с другим именем, могу ли я реализации №1 и №2 написать с одним именем? и что нужно, чтобы сработала подстановка? примерчик пожалуйста :) Название: Re: Подстновка функции в саму себя Отправлено: BRE от Август 28, 2009, 13:56 Не совсем понял мысль...
У тебя есть функция read (#1) и ты хочешь написать вторую функцию read (#2) с тем-же именем и параметрами в которой будешь использовать #1? Название: Re: Подстновка функции в саму себя Отправлено: kuzulis от Август 28, 2009, 13:58 дадада :)
т.е конечной должна быть функция №2 , просто мне не хочется в теле ф №2 писать код от ф №1 , и не хочется в хейдере определять 2 функции! т.е в хедере должна быть одна ф-я : int read(char* data, int len) :) или это нереально? Название: Re: Подстновка функции в саму себя Отправлено: BRE от Август 28, 2009, 14:03 дадада :) В одном пространстве имен - нет.А так функции можно разнести в разные пространства имен/разные классы. Код
Название: Re: Подстновка функции в саму себя Отправлено: kuzulis от Август 28, 2009, 14:10 Спасибо, понятно...
Название: Re: Подстновка функции в саму себя Отправлено: Winstrol от Август 28, 2009, 14:51 Создавать две функции с одним и тем же именем, но разным телом нельзя.
Но можно в клиентском коде, где собираешься использовать read переопределить ее имя с помощью препроцессора на свое. #define read myread. А в реализации myread с чистой совестью вызывать стандартный read. Название: Re: Подстновка функции в саму себя Отправлено: Igors от Август 28, 2009, 20:30 т.е. чтобы не реализовывать новую функцию №2 с другим именем, могу ли я реализации №1 и №2 написать с одним именем? Можете.и что нужно, чтобы сработала подстановка? примерчик пожалуйста :) int read( char * dst, int len ) {...} int read( void * dst, int len ) {...} Но в С++ это просто 2 разные функции и никакой подстановки нет. Практически это приносит только неудобства - все время надо помнить "который read" |