Tôi đã gặp vấn đề này một thời gian trước đây và tôi đã từ bỏ nhưng gần đây nó đã trở lại.Cách gọi con trỏ đến phương thức từ phương thức khác
#include <iostream>
class element2D;
class node2D
{
public:
void (element2D::*FunctionPtr)();
void otherMethod()
{ std::cout << "hello" << std::endl;
((this)->*(this->FunctionPtr))(); //ERROR<-------------------
}
};
class element2D
{
public:
node2D myNode;
void doSomething(){ std::cout << "do something" << std::endl; }
};
int main()
{
element2D myElement;
myElement.myNode.FunctionPtr = &element2D::doSomething; //OK
((myElement).*(myElement.myNode.FunctionPtr))(); //OK
return 0;
}
Tôi nhận được lỗi tại dòng rõ rệt:
pointer to member type 'void (element2D::)()' incompatible with object type 'node2D'
tôi sẽ thực sự biết ơn sự giúp đỡ. Có một câu hỏi tương tự hôm nay đã giúp tôi một phần: link. Nhưng nó không có vẻ là câu trả lời đầy đủ cho vấn đề của tôi.
Thực tế hai vấn đề này chỉ có một điểm khác biệt - điểm mà hàm được gọi.
Cảm ơn thời gian của bạn