private inheritance would be an option... but how would the set method look like? set(p) { this = p; } ? or vec3::operator=(p) ?