• Как найти элемент (класс как тип) в обобщенном односвязном списке (при этом сохранив обобщенность метода поиска)?

    @BelDm Автор вопроса
    xaiponews, спасибо за обратную связь, но поскольку класс "List" обобщенный, соответственно требования к поиску таковы, что данный метод должен работать и с иными типами данных, стандартными...соответственно в этом и есть основная загвоздка.
    Если же current->data == data по умолчанию определено для int, double, string...а также перегружено для Student, то возникают проблемы с cin >> data, приходится вводить все поля класса Student, тем паче, что ">>" уже перегружен для файлов((( и получается замкнутый круг...либо пожертвовать всеми типами кроме Student, либо наоборот - любой тип, кроме Student.
    Написано
  • Не работает деструктор. В чем ошибка?

    @BelDm Автор вопроса
    Wataru, добавил необходимое, но...(((
    #include

    using namespace std;

    class Polinomial
    {
    private:
    //Свойства класса
    int degree = 0;
    double *coefficient = NULL;

    public:
    //Конструктор
    Polinomial (double *arr, int x)
    {
    degree = x - 1;
    coefficient = (double*)malloc(sizeof(double)*x);
    for (int i = 0; i < x; i++)
    {
    coefficient[i] = arr[i];
    }
    }

    //Конструктор копирования
    Polinomial (Polinomial &p)
    {
    degree = p.degree;
    coefficient = (double*)malloc(sizeof(double)*(degree + 1));
    for (int i = 0; i < degree; i++)
    {
    coefficient[i] = p.coefficient[i];
    }
    }

    //Перегруженный оператор присваивания
    Polinomial operator = (const Polinomial &p)
    {
    if (this != &p)
    {
    degree = p.degree;
    coefficient = (double*)realloc(coefficient, sizeof(double)*(degree + 1));
    for (int i = 0; i < degree; i++)
    {
    coefficient[i] = p.coefficient[i];
    }
    } else
    {
    cout << "Самоприсваивание" << endl;
    }
    return *this;
    }

    //Деструктор
    ~Polinomial()
    {
    if (coefficient != NULL)
    {
    free(coefficient);
    }
    }

    friend ostream & operator << (ostream & out, Polinomial &p);
    };

    ostream & operator << (ostream & out, Polinomial &p)
    {
    for (int i = 0; i <= p.degree; i++)
    {
    out << p.coefficient[i] << " ";
    }

    return out;
    }

    int main() {

    double arr1[] = {1.0, 3.0, 5.0};
    double arr2[] = {1.1, 3.1, 5.1, 6.1};
    Polinomial pol1(arr1, 3);
    Polinomial pol2(arr2, 4);
    //pol1 = pol2;
    cout << pol2;

    return 0;
    }
    63dadc8880d1e320953744.png
  • Не работает деструктор. В чем ошибка?

    @BelDm Автор вопроса
    Спасибо! Для меня за отсутствием опыта совсем не очевидно, что подобные вещи в тесной связке с конструктором копирования и оператором присваивания. Сейчас реализуем.