скажем, у меня есть простой класс с некоторым простым указателем на функцию, например:
class ClassWithFuncPointer
{
public:
inline void firstFunction() { /* do something */ };
inline void secondFunction() { /* do something */ };
// MY FUNCTION POINTER
void (ClassWithFuncPointer::*funcPointer) ();
// AND I CAN DEFINE IT BY DEFAULT IN CONSTRUCTOR LIKE THAT:
ClassWithFuncPointer()
{
funcPointer = &ClassWithFuncPointer::firstFunction;
}
// AND NOW I CAN USE MY FUNCTION POINTER INSIDE OF ClassWithFuncPointer, LIKE THAT:
void useFunctionPointer()
{
(this->*funcPointer )();
}
}
Так что здесь (this->*funcPointer )();
выполняет работу.
Но я не могу понять этокак использовать мой funcPointer
из другого класса, я имею в виду что-то вроде этого:
class otherClass
{
otherClass(){};
ClassWithFuncPointer instanceOfClassWithFuncPointer;
}
А теперь как я могу использовать funcPointer
внутри otherClass
для члена instanceOfClassWithFuncPointer
.Возможно ли это вообще?
Я перепробовал много вариантов:
(this->*instanceOfClassWithFuncPointer.funcPointer)();
или
(instanceOfClassWithFuncPointer.*funcPointer)();
или
( (&instanceOfClassWithFuncPointer)->*funcPointer )();
или просто
instanceOfClassWithFuncPointer.funcPointer();
, но всегда получаю ошибку.Я не могу понять это.