Try to make member attributes stack objects instead of pointers
to heap ones.
Find a way to use another widget's value(s) without replacing
pointers.
How about instead of replacing Attribute pointers,
Attributes could replace pointers to their values
directly?
You will still want an attributes list carrying references to
the member variables. This list will make it simple to perform
a common action on all attributes without needing direct member
variable calls.