Сегодня я был шокирован тем фактом, что этот фрагмент кода имеет двусмысленную ссылку на имя:
class A
{
private:
typedef int Type;
};
class B
{
public:
typedef int Type;
};
class D : A, B
{
Type value;//error: reference to 'Type' is ambiguous
};
Хмм! Представьте, что вы являетесь автором класса A
, и ваш класс уже везде используется разными людьми и в разных проектах. Однажды вы решите переписать свой класс A
. Разве это не означает, что вы не можете использовать какое-либо новое (даже частное) имя в своем новом классе, не нарушая чужой код?
Какое здесь соглашение?