есть такое понятие как свойство и методы getters/setters В С++ от Borland пишем примерно так (выдрано из реального кода):
    __property  float   Xmax = {write=set_x_max, read=x_max};
    __property  float   Ymin[int index] = {write=set_y_min, read=get_y_min};
    __property  float   Ymax[int index] = {write=set_y_max, read=get_y_max};
Здесь функции set_xxxx get_xxxx реализуют нужную функциональность для записи и чтения величин.
> И чтобы теперь a = List2.Field1 приводило к чтению из внешней 
> памяти, а b = List1.Field1 к чтению из набортного ОЗУ. 
Через getters - лехко.
> А List2 = List1 приводило к копированию из набортного во внешнее.
Если ограничиться только случаем List1.Field1 = List2.Field2
то опять же использование get/set полностью решает проблему.