Я создал класс с именем Set, который наследуется от базового класса с именем ISet, и выглядит примерно так:
template <class T>
class Set : public ISet<T>
{
public:
Set();
~Set();
Set(const Set &origin);
Set operator=(const Set &origin);
bool insert(T element);
bool remove(T element);
int size()const;
private:
T *arr;
int cap, nrOfElement;
void deepCopy(const Set &origin);
void freeMemory();
};
Теперь я должен построить функцию с именем insert, которая должна вставлять элемент введите T тогда и только тогда, когда она еще не существует. У меня есть проблема, чтобы понять, как решить эту проблему, поскольку элемент T должен быть любого типа. Я пробовал что-то вроде:
bool Set<T>::insert(T element)
{
bool added = false;
if (nrOfElement == 0)
{
this->arr[0] = element;
this->nrOfElement++;
}
else
{
for (int i = 0; i < this->nrOfElement; i++)
{
if (this->arr[i] == element)
{
i = this->nrOfElement;
added = true;
}
}
if (added == false)
{
this->arr[nrOfElement++] = element;
}
}
return added;
}
Но так как некоторые из классов, которые я пытаюсь вставить как T, не имеют оператора ==, он не может обработать операцию == выше, я пытаюсь делать. Должен ли я попытаться type_cast это? Или как ты это решаешь?