C const / неконстантные версии одной и той же функции - PullRequest
2 голосов
/ 24 июля 2010

Предположим, в CI есть функции

type* func (type*);
const type* func_const (const type*);

, так что они имеют одинаковую внутреннюю логику.

Есть ли способ объединить эти две функции в одну, где, еслиданный тип const возвращает тип const;и если задан неконстантный тип, он возвращает неконстантный тип?Если нет, каков хороший способ справиться с этим?Определить одно в терминах другого через явное приведение?

Ответы [ 2 ]

10 голосов
/ 24 июля 2010

Вы не можете автоматизировать это, но у вас наверняка может быть логика в одном месте:

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);
}
2 голосов
/ 24 июля 2010

Делайте то же самое, что и стандартные функции библиотеки C, и просто принимайте аргумент с константной квалификацией, возвращая результат без константной квалификацией.(См. strchr, strstr и т. Д.) Это наиболее практично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...