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

Функция для перевыделения памяти для массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что такое nan? http://www.cyberforum.ru/cpp-beginners/thread1230808.html
Собственно вопрос: что такое nan? Допустим v=2 #include<iostream> #include<cmath> using namespace std; int main() { setlocale(0,""); double E,m=pow(9.1*10,-31),c=(2.998*10,8),v,E1; cout<<"Введите скорость электрона v= "; cin>>v;
C++ си++ Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5 элементов).Написать программу, выполняющую следующие действия: -ввод с клавиатуры данных в массив STUD1, состоящий из 10 структур типа STUDENT;записи упорядочиваются по возрастанию номера группы. - вывод фамилий и номеров группы студентов,имеющих средний балл больше... http://www.cyberforum.ru/cpp-beginners/thread1230794.html
Неверная кодировка при чтении из файла C++
Здравствуйте! Есть функция, которая читает символы из текстового файла. При чтении русской буквы выскакивает ошибка Expression: c >= -1 && c <= 255. В чем проблема, и как ее исправить? Вот фрагмент из функции: // из прочтенной строки выделяет слова и числа игнорируя знаки препинания и прочие символы и // сохраняет слова в words while (getline(fio, line))
Отправка нажатий в не активное окно игры C++
пишу небольшую програмку. требуеться отправлять нажатия в не активное окно игры использую вот такой код конструктор для хранения данных struct KeyCom { int panel; int key; };
C++ Преобразование последовательности целых чисел по заданному правилу http://www.cyberforum.ru/cpp-beginners/thread1230702.html
Задано последованность целых чисел B(2n), n≤200.Создать программу,которая превращает эту последованность за правилом:B(1)=B(2n),B(2)=B(2n-1),...,то пследованность остаётся без изменений,иначе делается перестановка B(1),B(3),...,B(2n-1), B(2),B(4),...,B(2n).Результат печатает по пять чисел в ряде
C++ Перевод кода с Basic Нужно переписать программу из Basic в C++ Тексты программ нужно перепечатывать внутрь сообщения! подробнее

Показать сообщение отдельно
satisfactor
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 51

Функция для перевыделения памяти для массива - C++

19.07.2014, 22:44. Просмотров 427. Ответов 10
Метки (Все метки)

Доброго времени суток, пишу шаблонный класс для массива и никак не могу разобраться с динамическим перевыделением памяти посредством new && delete. Вот как я попытался это сделать:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class T>
void arrayM<T>::resize( int number ) {
    assert( number >= 0 );
    T* tmp;
    if ( number == 0 ) {
        if ( data != NULL ) {
            delete [] data;
            data = NULL;
        }
    } else {
        tmp = new T[number];
        if ( data != NULL ) {
            for ( int i = 0; i < size && i < number; i++ ) {
                tmp[i] = data[i];
            }
        }
        std::swap( data, tmp );
    }
    size = number;
    if ( tmp != NULL ) {
        delete [] tmp; //вызывает срабатывание точки останова
    }
}

где последний delete [] вызывает срабатывание точки останова. Программа-тестер:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "arrayM.h"
#include "triangle.h"
 
int main ( void )
{
    point A( 0, 0 );
    point B( 3, 0 );
    point C( 0, 4 );
    triangle a( A, B, C );
 
    arrayM<point> points;
    points.addElement(A);
    points.addElement(B);
    points.addElement(C);
 
    std::cout << a.getPerimeter();
    std::cin.get(); std::cin.get();
    return 0;
}


Точка останова срабатывает при выполнении points.addElement(B);

Интерфейс класса:
Кликните здесь для просмотра всего текста
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
template <class T>
class arrayM {
public:
    //overload
    T& operator[] ( int );
    T& operator[] ( int ) const;
    T& operator= ( const T &reference );
    //constructors
    arrayM( void );
    arrayM( const arrayM< T > & reference );
    //add
    void addElement( const T& reference );
    //delete
    void deleteByIndex( int );
    //search
    int searchElement( const T& reference ) const;
    //get
    int getSize( void ) const;
    //another
    std::ostream & show( std::ostream & = std::cout, char = std::cout.fill() );
    //destructor
    ~arrayM();
private:
    //service
    void resize( int number );
    T* data;
    int size;
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru