- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
class SOME_CLASS
{
public:
struct
{
inline uintb operator = (uintb newValue )
{
(reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_setI( newValue );
}
inline operator uintb ()
{
return (reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_i;
}
...
...
} i;
...
private:
void _setI( uintb newValue );
uintb _i;
}
известный подход: оператор= - сеттер, оператор приведения типа - геттер.
собственно, когда у данных нет сведений, к какому объекту они относятся, без оффсетов и кастов не обойтись.
да, кастовать лучше, наверное, к инту, а не к char * на случай всяких уникодов.
okay.jpg