Hi,
Yes you are correct, the nillable generated class should use the element name "locationType". I have raised this as an issue to be fixed in the next point release.
Your workaround is also correct, the following works OK:
CTopLevelElementPtr elm = CTopLevelElement::CreateInstance();
CLocationDefinitionPtr def = CLocationDefinition::CreateInstance();
CLocationType_NillablePtr type = CLocationType_Nillable::CreateInstance("locationType");
type->SetUnits("test");
def->SetLocationType(type);
elm->SetLocationDefinition(def);