код:нестатическая функция член reinterpret_cast не удалось
#include <iostream>
using namespace std;
struct item
{
int f1() {}
double f2() {}
static int g1() {}
static double g2() {}
void f0();
};
void item::f0()
{
auto c1 = reinterpret_cast<decltype(f2)>(f1);
auto c2 = reinterpret_cast<decltype(g2)>(g1);
auto c3 = reinterpret_cast<decltype(&f2)>(f1);
auto c4 = reinterpret_cast<decltype(&g2)>(g1);
}
int main()
{
cout << "Hello world!" << endl;
return 0;
}
сообщение об ошибке:
main.cpp|17|error: invalid use of non-static member function|
main.cpp|18|error: invalid cast from type ‘int (*)()’ to type ‘double()’|
main.cpp|20|error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say ‘&item::f2’ [-fpermissive]|
main.cpp|20|error: invalid use of member function (did you forget the ‘()’ ?)
мой вопрос: Функции-члены, передаваемые в качестве аргументов будет автоматически преобразовать в указатель, так что я стараюсь отливку аргумент указателю, но все еще не удалось. Я не понимаю, почему нестатическая функция-член не работает во всех ситуациях .
Я хочу, чтобы c1 был функцией, кроме того, reinterpret_cast не может преобразовать int в double – lnvm
@ Gr.Five, см. Обновленный ответ. –
@R Sahu, замечательный! Это работает, но не могли бы вы объяснить, почему? – lnvm