C const/ неконстантные версии одной и той же функции
Предположим, в C I есть функции
type* func (type*);
const type* func_const (const type*);
так что они оба имеют одинаковую внутреннюю логику.
Есть ли способ, которым я могу объединить два в одну функцию, где, если дан константный тип, он возвращает константный тип; и если задан неконстантный тип, он возвращает неконстантный тип? Если нет, каков хороший способ справиться с этим? Определите одно в терминах другого через явное приведение, возможно?
2 ответа
Решение
Вы не можете автоматизировать это, но вы можете иметь логику в одном месте:
const type* func_const (const type*)
{
/* actual implementation goes here */
}
type* func (type* param)
{
/* just call the const function where the "meat" is */
return (type*)func_const(param);
}
Делайте так, как это делают стандартные функции библиотеки C, и просто принимайте аргумент с константной квалификацией, возвращая не квалифицированный константный результат. (Увидеть strchr
, strstr
и т. д.) Это наиболее практично.