Для бешенной собаки 7 верст не крюк...
От: denisko http://sdeniskos.blogspot.com/
Дата: 17.11.09 11:55
Оценка:
или зарядко для мозгов.
Нарвался на распространенную ошибку, но в интересной обертке.
Предыстория. Есть проект, который писался на билдере, сейчас пишется на студии (ну и просто стараемся сделать достаточно переносимым). Есть структура размер которой, добавляя поля, менять нельзя, поэтому cделали такой костыль
#define DECLARE_PROPERTY_PROXY_ACESS(PropertyBase,Type, fnRead, fnWrite, Name)\
struct Property_##Name:public  PropertyBase(Type)\
{\
   __inline Property_##Name(PropertyHolder* parent):\
   m_parent(parent)\
   {\
      ;\
   }\
   __inline Type operator = (Type val)\
   {\
      m_parent->fnWrite(val);\
      return m_parent->fnRead();\
   }\
   __inline operator Type()\
   {\
     return m_parent->fnRead();\
   }\
private:\
   PropertyHolder* m_parent;\
};

т.е. структурко принимает на вход указатель на класс, делает с ним какие-то операции, и мимикрирует под нужный результат.
следующий код, по понятным причинам, вызывает падение (prev->Right() возвращает структуру подобную верхней)
currentRange.first = prev != NULL ? prev->Right() : 0;

Внимание вопрос: почему
З.ы. сегодня мне чуть не набили мордо, почувствовал себя автором "счастливой отладки".
<Подпись удалена модератором>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.