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и т. д.) Это наиболее практично.

Другие вопросы по тегам