Инициализация указателя функции не скомпилируется - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь инициализировать переменную-указатель функции, чтобы передать ее в качестве параметра конструктору, который получает указатель на функцию.

Я перепробовал почти все версии этого объявления, которые мне удалось найти в Интернете, и все они дали мне ошибки компиляции.

// the functions
void *OthelloBoard::GetOptions() const { return nullptr; }
void OthelloBoard::SetOptions(const void *data) {}

// the function pointers
void *(OthelloBoard::*GetOptionsPtr)() const = &OthelloBoard::GetOptions;
void (OthelloBoard::*SetOptionsPtr)(const void *) = &OthelloBoard::SetOptions;

// the constructor 
BoardClass(void (*setOptions)(const void *), void *(*getOptions)()) {}

// the constructor call
BoardClass OthelloBoard::mClass(SetOptionsPtr, GetOptionsPtr);

Я ожидал, что переменные будут скомпилированы и правильно переданы, но мне выдали эту ошибку:

error: cannot initialize a variable of type 'void (OthelloBoard::*)(const void *)' with an rvalue of type 'void (*)(const void *)'

void (OthelloBoard::*SetOptionsPtr)(const void *) = &OthelloBoard::SetOptions;
                     ^                              ~~~~~~~~~~~~~~~~~~~~~~~~~
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...