Я пытаюсь объявить и вызвать указатель функции внутри разных классов, но получить ошибку во время компиляции. Пожалуйста, ознакомьтесь с правилами, указанными ниже. ПРИМЕЧАНИЕ. Это не фактический код, а только часть фактического кода с измененными именами переменных и функций.Ошибка в вызове функции указатель
хиджры Файл
typedef bool (A::*add_ptr_Typ)(int a,int b);
class A
{
public:
bool add_func(int a,int b);
void m_assign();
add_ptr_Typ add_ptr;
}
Файл a.cpp
void A::m_assign()
{
add_ptr = & A::add_func;
}
bool A::add_func(int a,int b)
{
if ((a+b) > 10)
return true;
else
return false;
}
Файл B.h
class B
{
public:
add_ptr_Typ m_add_ptr;
bool m_process(A* A_ptr);
}
Файл B.cpp
bool B::m_process(A* A_ptr)
{
m_add_ptr = A_ptr->add_ptr;
(m_add_ptr)(2,3); //error:must use â.*â or â->*â to call pointer-to-member function
(*m_add_ptr)(2,3);//error: invalid use of âunary *â on pointer to member
(this->m_add_ptr)(2,3);//error: must use â.*â or â->*â to call pointer-to-member function
this->m_add_ptr(2,3);//error: pointer to member type bool (A::)(int,int) incompatible with object type B
}
Я пытался вызвать указатели функций всеми возможными способами (я не знаю, ошибаются ли некоторые или все из них). Сообщение об ошибке, которое я получил во время компиляции, было помещено как комментарий перед этой строкой.
Большое спасибо. Это сработало. :) – sajal