Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Rom99an
0 / 0 / 0
Регистрация: 07.03.2018
Сообщений: 4
#1

Ошибка с Деструктором

07.03.2018, 19:46. Просмотров 165. Ответов 4
Метки нет (Все метки)

Проблема заключается в следующем: Имеется класс Вектор, в котором есть поля два поля (для координат и их количества).
Есть конструктор по умолчанию(создает нулевой вектор) и конструктор создания н-мерного вектора(в котором происходит инициализация всех координат одним значением),в который передается количество координат вектора.Если в main с помощью двух классов задать вектора с разным количеством координат с помощью данного конструктора,то появляется ошибка: (Ошибка появляется и без объекта С) Expression: _CrtlsValidHeapPointer(block)
Сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <locale.h>
#include <string>
using namespace std;
class Vect {
private:
    double *vec;
    int N;
public:
    Vect();
    Vect(int n);
    int GetSize();
    Vect::~Vect();
 
};
 Vect::Vect() {
    N = 0;
    vec = NULL;
 
}
Vect::Vect(int n) {
    N = n;
    vec = new double[N];
    for (int i = 0; i<N; i++) {
        vec[i] = 1;
    }
}
int Vect::GetSize() {
    int siz;
    siz = N;
    return siz;
}
 
 
 
Vect::~Vect() {
    if (N>0)
    {
        delete[]vec;
        N = 0;
    }
 
}
 
int main() {
    Vect A, B, C;
    int Size;
 
    A=Vect();
    B=Vect(10);
    C = Vect(3);
    Size = C.GetSize();
    cout << Size;
    return 0;
 
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2018, 19:46
Ответы с готовыми решениями:

Ошибка с деструктором класса
Всем привет, здесь код .h файла с описанным классом. В классе 2 конструктора:...

Ошибка с деструктором для класса матриц
Доброй ночи! Есть проблемка: имеется класс для представления матрицы, есть...

Проблемы с деструктором
Вот код : #include&lt;iostream.h&gt; #include&lt;string.h&gt; struct Value { char...

Не работает с деструктором
#define st system(&quot;pause&quot;); #include &lt;iostream&gt; using namespace std; class...

Проблема с деструктором
Помогите реализовать алгоритм: Пусть имеется класс сотрудников примерно...

4
nd2
2833 / 2401 / 1056
Регистрация: 29.01.2016
Сообщений: 8,038
07.03.2018, 20:10 #2
Нужен оператор присваивания и конструктор копирования (правило трёх).
0
lArtl
208 / 92 / 41
Регистрация: 09.10.2014
Сообщений: 546
Завершенные тесты: 3
07.03.2018, 20:34 #3
исправь на
C++
1
2
3
4
5
6
7
8
9
10
11
class Vect {
private:
    double *vec;
    int N;
public:
    Vect();
    Vect(int n);
    int GetSize();
    ~Vect();
 
};
1
Rom99an
0 / 0 / 0
Регистрация: 07.03.2018
Сообщений: 4
07.03.2018, 22:50  [ТС] #4
Разобраться бы как этот оператор сюда применить
0
nd2
2833 / 2401 / 1056
Регистрация: 29.01.2016
Сообщений: 8,038
08.03.2018, 01:20 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class Vect {
private:
    double *vec;
    int N;
public:
    Vect();
    Vect(int n);
    Vect(const Vect& v);
    const int GetSize() const;
    Vect& operator=(const Vect& v);
    Vect::~Vect();
 
};
 
Vect::Vect() {
    N = 0;
    vec = NULL;
 
}
 
Vect::Vect(int n) {
    N = n;
    vec = new double[N];
    for (int i = 0; i<N; i++) {
        vec[i] = 1;
    }
}
 
Vect::Vect(const Vect& v) {
    N = v.N;
    vec = new double[N];
    for (int i = 0; i<N; i++) {
        vec[i] = v.vec[i];
    }
}
 
Vect& Vect::operator=(const Vect& v) {
 
    if (this != &v) {
        N = v.N;
        delete [] vec;
        vec = new double[N];
        for (int i = 0; i<N; i++) {
            vec[i] = v.vec[i];
        }
    }
    return *this;
}
 
const int Vect::GetSize() const {
    return N;
}
 
 
Vect::~Vect() {
    
    delete [] vec;
    N = 0;
}
1
08.03.2018, 01:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2018, 01:20

Класс с непустым деструктором
Доброго времени суток. Необходимо создать класс, который должен содержать...

Класс с Конструктором и Деструктором
напишите класс, содержащий закрытые целочисленные переменные , характеризующие...

Что не так с деструктором?
#define _CRT_SECURE_NO_WARNINGS #include&lt;iostream&gt; #include&lt;vector&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru