Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: контроль границ массива  (Прочитано 5169 раз)
0 Пользователей и 1 Гость смотрят эту тему.
555irina
Интересующийся

ru
Offline Offline

« : 05-05-2010 18:24 » 

Доброе время суток!
кто-нибудь может подсказать в чем ошибка данной программы-"безопасный массив(контроль границ массива)".

Код:
#include <iostream.h>
#include <stdlib.h>
class array
{
    int size;
    char *p;
    public:
    array (int num)
    ~array (){delete[]p;} // почему здесь ошибка и какая?

    char&put(int i)
    char get(int i)
};

array::array (int num )
{
    p=new char[num];
    if(!p)
    {
        cout<<"oshibka"
        exit(1);
    }
    size=num;
}
 
char & array::put(int i)
{
    if(i<0 ll i>=size)
    {
        cout<<"naryshenie graniz",exit(1);
    }
    return p[i];
}

char array :: get(int i)
{
    if(i<0 ll i>=size)
    {
        cout <<"oshibka v narushenii graniz",exit(1);
    }
    return p[i];
}

int main()
{
    array a(10);
    a.put(3)='x';
    a.put(2)='r';
    cout<<a.get(3)<<a.get(2)<<"\n";
    a.put(11)='!';
    return 0;
}
« Последнее редактирование: 05-05-2010 18:30 от Вад » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 05-05-2010 18:38 » 

Код отформатировал - а то ужас был какой-то, всё в кучу.

А компилятор что говорит? Должен говорить, что ожидал увидеть перед этой строкой точку с запятой (";"), но не увидел. Равно как ещё в куче строк по коду дальше.

Кстати, exit(0) - это очень плохое решение. Если так надо дать понять, что ситуация исключительная - то надо генерировать исключение. Но не так же.

Кроме того, конструктор копирования не перекрыт, поэтому могут быть (да нет, точно будут!) проблемы при удалении скопированного объекта.
« Последнее редактирование: 05-05-2010 18:40 от Вад » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines