ちょっと準備運動しました😀
#include <iostream>
#include <string>
#include <map>
class SpriteBank
{
public:
SpriteBank() = default;
~SpriteBank() = default;
bool myGetMessage(std::string* byref_str, std::string byval);
};
using PF = bool (SpriteBank::*)(std::string*, std::string);
bool SpriteBank::myGetMessage(std::string* byref_str, std::string byval) {
*byref_str = byval;
return true;
}
class PlayerController
{
public:
PlayerController();
~PlayerController();
std::string Func(PF pt_func);
private:
};
PlayerController::PlayerController()
{
}
PlayerController::~PlayerController()
{
}
std::string PlayerController::Func(PF pt_func)
{
SpriteBank obj;
std::string msg;
bool b = (obj.*pt_func)(&msg, "メッセージを受信しました。");
return msg;
}
int main()
{
SpriteBank* sprite_bank_ = new SpriteBank;
PlayerController controller;
PF tetraPF = &SpriteBank::myGetMessage;
std::string bind_text = controller.Func(tetraPF);
std::cout << bind_text << std::endl;
delete sprite_bank_;
return 0;
}
出力結果
tetraPFはクラスメソッド(関数)ポインタです。
これにクラスのメソッドを別のクラスに渡して、メソッドをリモート実行します。
コメント