2
Типичный геттер/сеттер выглядит следующим образом:Как сделать указатель на функцию постоянной
void setName(const std::string& _name) { name = _name; }
std::string getName() const { return name; }
Как я могу сделать то же самое, если член является указатель на функцию, как это:
void setBotFunc(int(*botFunc)()) { botFunction = botFunc; }
int (*getBotFunc() const)() { return botFunction; }
Особенно Я не знаю, как объявить сеттер таким образом, который говорит: «Я буду читать и не изменять указатель (значение)». Это даже имеет смысл? const int (*botFunct)()
, очевидно, рассматривается как функция, которая возвращает const int
.
Значение указателя копируется в любом случае ... Я не вижу большого смысла в создании переменной указателя const. – StoryTeller
Используйте typedef для типов функций, и вы больше не увидите проблемы. –
@StoryTeller Когда параметр указателя функции определяется как 'const', любые случайные попытки изменить его в' setBotFunc() 'приведет к ошибке: присвоение параметра только для чтения во время компиляции. Это лучше, чем альтернатива, которая является сбоем seg во время выполнения позже, при попытке перейти к адресу, указанному параметром необязательно измененного параметра функции. – TheCodeArtist