Code:
thing.write << make[i][j] = 128; // Here is error
Firstly operator << has a higher precedence to operator = so it parses as
Code:
(thing.write << make[i][j]) = 128;
if you want it the other way round you must put in parentheses
thing is not declared and we don't know what write is either. Assuming it is a stream-type, it does not make sense to assign it to 128.
To get this to compile you would need to:
1. Have thing and write defined (to be some stream)
2. overload operator<< with the first parameter of the type of thing.write (or something it derives from) and the second parameter of type box.
3. Get operator precedence right by putting in parentheses
4. Overload operator= for box to take an integer as a parameter, if this makes sense.