在C++中,如何使用指針從類B調用類A的方法成員?順便說一下,A類和B類是不同類型的。將變量指向不同類類型的成員函數
我讀到,當指針指向成員函數時,它只能指向類中的成員函數。但是我怎樣才能指出課堂以外的成員函數呢?
例如:
class A
{
public:
int add(int x)
{
return x+x;
}
};
int main()
{
typedef int (A::*pointer)();
pointer func = &A::add;
A objt;
B objt2;
obt2.*func(2);// the compiler give me an error of incompatible with object type ‘B’
return 0;
}
嘗試'(2)' – 2012-04-13 21:39:03
@Chet:這並不解決調用的一個實例的'A'成員函數的事實'B'是無意義的。 – ildjarn 2012-04-13 21:39:48
無論您試圖用這個概念解決什麼問題,都可能通過另一種方法解決起來更容易和*更好。在C++中,方法和函數與Smalltalk和其他純粹的OO語言不同。重新整理您的解決方案,以使用語言的實用功能,例如繼承或某種可實現您的目標的設計模式。如果你分享你的實際目標,有人可能會提出一些有效的方法。 – 2012-04-13 21:42:20