2011年5月28日土曜日

C++ メンバ関数ポインタのメンバ変数

#include

struct hoge
{
typedef void state_t(int);
state_t hoge1, hoge2; // メンバ関数の宣言
state_t hoge::* state; // メンバ変数
};

void hoge::hoge1(int)
{
std::cout << "hoge1" << std::endl;
state = &hoge::hoge2;
}

void hoge::hoge2(int)
{
std::cout << "hoge2" << std::endl;
state = &hoge::hoge1;
}

int main()
{
hoge h;
h.state = &hoge::hoge1;
std::cout << sizeof(h) << std::endl;
(h.*(h.state))(0);
(h.*(h.state))(0);
(h.*(h.state))(0);
(h.*(h.state))(0);
}


0 件のコメント:

コメントを投稿