This is because of a diamond inheritance pattern, to resolve the error you can specify the specific namespace you want the member from like.
paddressType->MeasurementKeyword::GetValue()
or
paddressType->CharacterKeyword::GetValue()
- Basically your
AddressType
class has access to theGetValue
members from both the classes it inherits from and can't choose one (call is ambiguous). - The scope resolution operator (
::
) helps specify which one you actually want. - You haven't said what you actually want this code to do so I'll just say that generally complex inheritance patterns are not conducive to creating readable code, rethink what you actually want.