В моей программе есть следующая иерархия классов:
class Base // Base is an abstract class
{
};
class A : public Base
{
};
class B : public Base
{
};
Я хотел бы сделать следующее:
foo(const Base& one, const Base& two)
{
if (one == two)
{
// Do something
} else
{
// Do something else
}
}
У меня есть проблемы, связанные с operator==()
здесь.Конечно, сравнивать экземпляр A
и экземпляр B
не имеет смысла, но сравнение двух экземпляров Base
должно быть возможным.(Вы не можете сравнивать собаку и кошку, однако вы можете сравнить двух животных)
Я хотел бы получить следующие результаты:
A == B
=> false
A == A
=> true
или false
, в зависимости от действующего значения двух экземпляров
B == B
=> true
или false
, в зависимости от эффективного значения двух экземпляров
Мой вопрос: это хороший дизайн / идея?Это вообще возможно?Какие функции я должен писать / перегружать?