ラベル void state の投稿を表示しています。 すべての投稿を表示
ラベル void state の投稿を表示しています。 すべての投稿を表示

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);
}