W>Уважаемые профессионалы, приведите пожалуйста пример такого приведения типа.
ну, например так ?
#include <iostream>
struct Next {
Next(Next (*p)()) : fun(p){}
Next (*fun)();
};
Next fun1()
{
std::cout<<"fun1()\n";
Next fun2();
return Next(fun2);
}
Next fun2()
{
std::cout<<"fun2()\n";
Next fun3();
return Next(fun3);
}
Next fun3()
{
std::cout<<"fun3(), final state\n";
return Next(0);
}
int main()
{
Next state(fun1);
while(state.fun) {
state = state.fun();
}
}
или тебе касты нужны обязательно?
typedef void (*generic)();
generic fun1()
{
generic fun2();
std::cout<<"fun1\n";
return reinterpret_cast<generic>(fun2);
}
generic fun2()
{
generic fun3();
std::cout<<"fun2\n";
return reinterpret_cast<generic>(fun3);
}
generic fun3()
{
std::cout<<"fun3, final state\n";
return 0;
}
int main()
{
generic state = reinterpret_cast<generic>(fun1);
while (state) {
state = reinterpret_cast<generic (*)()>(state)();
}
}
Но это, конечно, ужас кромешный и ночной кошмар. Нафиг такие касты.