Как получить индекс virtual func в vftbl на этапе компиляции
От: Andrew_D  
Дата: 23.10.06 16:48
Оценка:
Дано:
interface ISome
{
   virtual void f1()=0;
   virtual void f2()=0;
   virtual void f3()=0;
   virtual void operator()()=0;
};

// нужно получить что-то подобное
// либо в виде енума:
enum E_ISomeOffsets
{
   eOff_f1 = 0x0, // индекс для f1()
   eOff_f1 = 0x2, // индекс для f3()
   eOff_operator_braked = 0x3, // индекс для operator()()
};

// либо в виде макроса:
#define __OFF_ISome_f1__ 0x0
#define __OFF_ISome_f3__ 0x2
#define __OFF_ISome_operator_braked__ 0x3

Т.е. задача сводится к вычислению на/перед этапе/этапом компиляции смещений для виртуальных функций —
нужно по заданным интерфейсам сгенерировать величины смещения для указанных методов.
Перегруженных методов нет, наследование пока не рассматриваем.

У кого какие мысли? Поделитесь пожалуйста
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.