У меня есть двоичное дерево поиска, я использую шаблон для добавления к нему любого объекта класса.О перегрузке "=", и если я могу избежать этого
У меня есть функция поиска, которая возвращает сказал класс объекта или NULL
Нужно ли мне перегружать «=», чтобы вернуть этот объект? Я надеялся, что вернусь к объекту, который будет знать, чтобы проверить: если тот же тип заменит значения, хранящиеся в LHS, значениями, хранящимися в RHS, и если NULL пометьте первый объект как NULL.
Является ли моя ошибка, возможно, где-то в другом месте (все, что я возвращаю, это полный объект или NULL, ничего больше), или мне действительно нужно перегрузить его?
У меня есть ограниченное время (очень), так как я могу это сделать при необходимости? и это быстрый процесс, или он будет включать в себя множество изменений.
Извините за недостаток кода, но я не могу придумать, что было бы актуальным.
EDIT Я также использую много NULL, так что могу ли я вернуть NULL в объект? Пример:
class Matrix {
private:
int col;
int line;
int value;
}
Matrix mat; mat = NULL;
Некоторый код:
template <typename Type>
Type BST<Type>::search(int key) {
if (this->root == NULL)
return NULL;
else
return root->search(key);
Здесь тип является матрица. Могу ли я вернуть NULL или пойти дальше с поиском и возвратом Type, который снова является Matrix?
Примечание: Это для домашних целей, утечка памяти - моя последняя забота. Простота и скорость - это, безусловно, моя первая проблема.
Я думаю, что код был бы уместным, это не совсем понятно, что вы хотите. Зачем вам нужно перегружать '=' to ** return ** объект? Вы используете '=' для назначения объекту (хотя он имеет возврат). –
с объемом информации, которую вы предоставляете по предмету, сложно сказать, что вам нужно. в общем случае компилятор C++ генерирует глубокие (вызывающие операторы присваивания операторам) код оператора присваивания автоматически. – bobah
Функции поиска контейнеров STL возвращают итератор; если итератор имеет определенное магическое значение (обычно равное 'container.end()'), поиск считается неудачным. Другая возможность - переопределить приведение к 'bool' на вашем объекте, поэтому специальный экземпляр класса, представляющий пустой или несуществующий узел, будет оцениваться как' false'. – Rook