
Zara wrote:
class foo { private: unsigned char internals[5]; public: char a() {return internals[0];} int b() { // select code block depending on your endianness unsigned int n=(a[0]<<24)|(a[1]<<16]|(a[2]<<8)|a[3]; unsigned int n=(a[3]<<24)|(a[2]<<16]|(a[1]<<8)|a[0]; return static_cast<int>(n); } };
Thank you for the answer, but the solution is only close to what I requested. Access syntax in your solution is: data.a() while I want data.a I.e. a has to be an object on its own that has a type conversion operator for the access. My problem as far as I can currently see, boils down to another question: I have struct bar { } and struct foo { bar a; } How can I give bar access to its "container"? Perhaps like so: struct foo { foo() { a.setref(this); } bar a; } But this implies runtime cost, which I want to avoid. Another solution: struct foo { foo() : a(this) {} bar a; } While I am not sure if this avoids the runtime cost, I am also unsure if this is valid C++ at all. At least the microsoft compiler spills out a warning. Roland aka speedsnail