Я действительно борется с проблемой наследования при использовании того, что должно быть строго типизированным перечислением - однако перечисления, кажется, являются неоднозначными при использовании через наследование.enum class неоднозначное наследование
Im используя г ++ (GCC) 4.7.2
enum class AE { V1 };
enum class BE { V2 };
enum class CE { V3 };
struct A { void set(AE enumval) { } };
struct B { void set(BE enumval) { } };
struct C { void set(CE enumval) { } };
struct combined : A, B, C { };
struct all_in_one {
void set(AE enumval) { }
void set(BE enumval) { }
void set(CE enumval) { }
};
void function()
{
combined inherited_obj;
// compile errors - ambigious funtion call
inherited_obj.set(AE::V1);
inherited_obj.set(BE::V2);
inherited_obj.set(CE::V3);
all_in_one simple_obj;
// works like a charm...
simple_obj.set(AE::V1);
simple_obj.set(BE::V2);
simple_obj.set(CE::V3);
}
Я не могу найти никакой информации, почему она не должна работать таким образом. Я пропустил что-то очевидное.
ARGH, то есть Hillarious - я думал, что я мог бы сделать это более умный путем шаблонирования классов функций, чтобы я мог устранить много кода, поскольку они по существу выполняли те же функции только на своих собственных наборах данных. – Tobibobi
Однако это действительно сработало, спасибо! – Tobibobi