Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
#1

Шаблон класса деструктор вызывает ошибку - C++

04.06.2014, 11:11. Просмотров 413. Ответов 4
Метки нет (Все метки)

Не так чего после того как доходит до деструктора выдает такую ошибку

Шаблон класса деструктор вызывает ошибку

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
61
62
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
template <class T> 
class A{
        
    int  size;        
    T    *mas;
 
public:
    A(int s);
    ~A(){
        if(mas){
            delete [] mas;
        }
    };      
    void set();
    void print();   
};
 
template<class T>A<T>::A(int s){
    size = s;
    if(s)
    mas = new T [size];
    else
    mas = 0; 
}
 
template<class T>void A<T>::set(){
    for(int i=1;i<size+1;i++){
        cout << "A[" << i << "] = ";
        cin >> mas[i];
    }
}
 
template<class T>void A<T>::print(){
    for(int i=1;i<size+1;i++){
        cout << "A[" << i << "] = " << mas[i]/i << endl;
    }
}
 
using namespace System;
 
int main()
{
    //----------->>>>>>>>> для int
    A<int>my(3);
    my.set();
    my.print();
    _getch();
    //----------->>>>>>>>> для double
    A<double>my_2(3);
    my_2.set();
    my_2.print();
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 11:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблон класса деструктор вызывает ошибку (C++):

Деструктор вызывает исключение Access violation - C++
Создаю велосипед - класс с динамическим массивом. При вызове деструктора срабатывает исключение Access violation. Без деструктора...

Шаблон класса выдает непонятную ошибку - C++
template &lt;class one_of_the_strings&gt; class MarkovAlgorithm { private: int quantity; bool is_set_amount; bool...

Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона" - C++
Решил создать класс List для задания двусвязного списка, и в самом начале компилятор начал ругаться на шаблон класса: error C2955:...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон - C++
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены функции (работают) Троллейбус и Трамвай одинаковые поля...

Деструктор класса - C++
Имеется собственный класс, возник вопрос, деструктор класса вызывается не явно ? если так, то в какой момент он вызывается ?

деструктор класса - C++
Здравствуйте! Я скопировал код отсюда https://msdn.microsoft.com/ru-ru/library/6t4fe76c.aspx себе в Visual Studio 2015, после...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
04.06.2014, 11:15 #2
Цитата Сообщение от Дъячелли Посмотреть сообщение
for(int i=1;i<size+1;i++){
* * * * cout << "A[" << i << "] = ";
Массивы индексируются с нуля, тут выход за границу.
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
04.06.2014, 11:31  [ТС] #3
так если с нуля тогда в функции print будет на 0 делитьcя и опять ошибка ?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class T>void A<T>::set(){
    for(int i=0;i<size;i++){
        cout << "A[" << i << "] = ";
        cin >> mas[i];
    }
}
 
template<class T>void A<T>::print(){
    for(int i=0;i<size;i++){
        cout << "A[" << i << "] = " << mas[i]/i+1 << endl;
    }
}
сделала так ошибка сразу в первом принте появилась, похоже это не деструктор а деление, чего-то не фуричит как мне хочется

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class T>void A<T>::set(){
    for(int i=0;i<size;i++){
        cout << "A[" << i << "] = ";
        cin >> mas[i];
    }
}
 
template<class T>void A<T>::print(){
    for(int i=0;i<size;i++){
        cout << "A[" << i << "] = " << mas[i]/(i+1) << endl;
    }
}
да все просто, никаких проблем с деструктором, это у меня похоже проблемы массивами, спасибо =)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
04.06.2014, 11:54 #4
C++
1
mas[i]/(i+1);
В чем проблема?
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
04.06.2014, 11:57  [ТС] #5
да сама заметила, затупила =), а к массивам и правда строго с нуля, в этом изначальная проблема бла
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 11:57
Привет! Вот еще темы с ответами:

Объявление вызывает ошибку - C++
1. где объявлять глобальные константы и переменные? в файле с ароматом .h? 2.Объявление extern fstream AccFile; вызывают ошибку ...

Деструктор класса список - C++
Доброго времени суток. Создал класс односвязный список. Не знаю как сделать деструктор таким, чтобы он удалял все элементы списка. В том...

Деструктор абстрактного класса - C++
Почему деструктор абстрактного класса нужно делать виртуальным?

Перечисление в классе вызывает ошибку - C++
#pragma hdrstop #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;tchar.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.06.2014, 11:57
Ответ Создать тему
Опции темы

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