Я создал класс с функцией-членом и структурой, которая имеет указатель на функцию-член в качестве атрибута.Я инициализировал структуру с адресом функции-члена.Затем я создал объект для этого класса в функции main и вызвал указатель на функцию-член с помощью «(-> *)».Но произошел сбой с ошибкой, в которой говорилось, что «ошибка:« правильный операнд »не был объявлен в этой области»
//Header
#ifndef A_H
#define A_H
class A
{
public:
typedef struct
{
void (A::*fptr) ();
}test;
test t;
public:
A();
virtual ~A();
void display();
protected:
private:
};
#endif // A_H
//A.cpp
#include "A.h"
#include <iostream>
using namespace std;
A::A()
{
t.fptr = &A::display;
}
A::~A()
{
//dtor
}
void A::display()
{
cout << "A::Display function invoked" << endl;
}
//Main
#include <iostream>
#include "A.h"
using namespace std;
int main()
{
cout << "Pointer to Member Function!" << endl;
A *obj = new A;
(obj->*t.fptr)();
return 0;
}
|| === Сборка: отладка в fptr (компилятор: GNU GCCКомпилятор) === |В функции 'int main ()': |ошибка: 't' не было объявлено в этой области ||| === Сбой сборки: 1 ошибка (ов), 0 предупреждение (я) (0 минут, 1 секунда) === |