Function Pointer (たとえば ) を持つ Adapter クラスを作成しようとしていましたfnPtr
。また、さまざまな Adaptee クラスに基づいてfnPtr
、対応する Adaptee の機能が割り当てられます。以下はコード スニペットです。
class AdapteeOne
{
public:
int Responce1()
{
cout<<"Respose from One."<<endl;
return 1;
}
};
class AdapteeTwo
{
public:
int Responce2()
{
cout<<"Respose from Two."<<endl;
return 2;
}
};
class Adapter
{
public:
int (AdapteeOne::*fnptrOne)();
int (AdapteeTwo::*fnptrTwo)();
Adapter(AdapteeOne* adone)
{
pAdOne = new AdapteeOne();
fnptrOne = &(pAdOne->Responce1);
}
Adapter(AdapteeTwo adtwo)
{
pAdTwo = new AdapteeTwo();
fnptrTwo = &(pAdTwo->Responce2);
}
void AdapterExecute()
{
fnptrOne();
}
private:
AdapteeOne* pAdOne;
AdapteeTwo* pAdTwo;
};
void main()
{
Adapter* adpter = new Adapter(new AdapteeOne());
adpter->AdapterExecute();
}
今私が直面している問題はmain()
機能にあります。Adapter s function pointers (
fnptrOne and
fnptrTwo を呼び出す方法がありません)。私は得ています:
エラー C2276: '&': バインドされたメンバー関数式に対する不正な操作
前のエラー メッセージと一緒に。これは、&
operator が から関数ポインタを作成できないことを意味している可能性がありpAdOne->Responce1
ます。
t have a function pointer in some
ClassA which could point to a non-static function present in another
ClassB`ができるということですか?