Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rom99an
0 / 0 / 0
Регистрация: 07.03.2018
Сообщений: 4
#1

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

07.03.2018, 19:46. Просмотров 152. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка с Деструктором (C++):

Ошибка с деструктором класса - C++
Всем привет, здесь код .h файла с описанным классом. В классе 2 конструктора: 1-ый без аргументов 2-ой инициализации, в каждом из которых я...

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

Проблема с деструктором - C++
Помогите реализовать алгоритм: Пусть имеется класс сотрудников примерно следующего вида: Unit { char name; Unit *Master;...

Проблемы с деструктором - C++
Вот код : #include&lt;iostream.h&gt; #include&lt;string.h&gt; struct Value { char val_1; int val_2; bool val_3; };

Не работает с деструктором - C++
#define st system(&quot;pause&quot;); #include &lt;iostream&gt; using namespace std; class temp{ public: int a; unsigned int b; void...

Что не так с деструктором? - C++
#define _CRT_SECURE_NO_WARNINGS #include&lt;iostream&gt; #include&lt;vector&gt; #include &lt;iomanip&gt; #include &lt;algorithm&gt; using namespace std; ...

4
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,003
07.03.2018, 20:10 #2
Нужен оператор присваивания и конструктор копирования (правило трёх).
0
lArtl
130 / 59 / 21
Регистрация: 09.10.2014
Сообщений: 373
Завершенные тесты: 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
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,003
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
Привет! Вот еще темы с ответами:

Класс с непустым деструктором - C++
Доброго времени суток. Необходимо создать класс, который должен содержать освобождающий занятые классом ресурсы. Вот такое я написал: ...

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

Реализовать класс строки с деструктором - C++
Конструкторов у структуры может быть несколько. Для строки может оказаться полезным заполняющий конструктор (например, чтобы создать строку...

Создание класса с конструкторами и деструктором - C++
Доброго времени суток! Прошу помощи в задании: Класс, хранящий две строки символов s1 и s2. Создать метод, производящий посимвольное...


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

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

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