Re: функция, возвращающуя указатель на функцию, возвращающая
От: Аноним  
Дата: 24.08.08 08:19
Оценка:
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)();
   }
}


Но это, конечно, ужас кромешный и ночной кошмар. Нафиг такие касты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.