Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 23:10   #1
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
Сообщение генерация исключения С++

Есть 2 cpp проекта: класс исключений и класс сложения двух строк соответственно.
Проблема: мне нужно было, по условию, добавить класс искл. , который должен генерировать искл. ,если строка инициализации слишком длинная. Но что у меня не так??

main.cpp

Код:
class base
{
private:
    char* str;
    int size;
public:
    base(){}
    base( char *str1) 
    { 
        size = strlen(str1);
        str = new char[size+1];
        strcpy(str,str1); 
    }
    ~base(){}
        void print() { cout<<str<<endl;}
    base operator + (base bs);
};

base base::operator +(base bs)
{
    strcat(str,bs.str);
    size = strlen(str);
    return (str);

}
 
void main()
{
    char obj1[80],obj2[80];
    try
    {
    cout<<" input:"<<endl;
    cin>>obj1;
    cin>>obj2;
    if(strlen(obj1) >10 || strlen(obj2) >10) throw err("\n leave for boards\n");
    }
catch(err ob)
{
    ob.get_error();
}
base s1(obj1),s2(obj2);
base s3;
    s3 =s1+s2;
    s3.print();
    
    system("pause");
}
error.cpp

Код:
class err
{
private:
    char array [33];
public:
    err(char *s)
    {
        strcpy(array,s);
    }
    char *get_error(){return array;}
};
zhenya.ya вне форума Ответить с цитированием
Старый 08.03.2011, 00:27   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

память не освобождается. оператор + перегружен не верно. оператор = не перегружен. конструктор по умолчанию плохой.
Код:
catch(err ob)
{
    ob.get_error();
}
выражение повисает в воздухе..

return 0; в мейн в конце концов

Последний раз редактировалось onewho; 08.03.2011 в 00:30.
onewho вне форума Ответить с цитированием
Старый 08.03.2011, 02:08   #3
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

Попробывал подкорректировать. Правильно ли?
Цитата:
выражение повисает в воздухе..
А что на самом деле дожно быть в данном случае в catch(){} ?

Код:
class base
{
private:
	char* str;
	int size;
public:
	base(){size = 0; str = 0;}
    base( char *str1) 
	{ 
		size = strlen(str1);
		str = new char[size+1];
		strcpy(str,str1); 
	}
	base (const base &bs3);
	~base()   
	{
		delete []str;  //не работает, если тут это написано.
	}
	    void print() { cout<<str<<endl;}
	base operator + (base bs);
	base operator = (base bs1);
};

base base::operator +(base bs)
{
	strcat(str,bs.str);
	size = strlen(str);
	return (str);
}
base base::operator =(base bs1)
{
	size = bs1.size;
	str = bs1.str;
	return (str);
}
base::base(const base &bs3)
{
	size = bs3.size;
	str = new char [ bs3.size ];
	strcpy(str,bs3.str);
}
int main()
{
	char obj1[80],obj2[80];
	try
	{
	cout<<" input:"<<endl;
	cin>>obj1;
	cin>>obj2;
	if(strlen(obj1) >10 || strlen(obj2) >10) throw err("\n leave for boards\n");
	}
catch(err ob)
{
	ob.get_error();
}
base s1(obj1),s2(obj2);
base s3;
	s3 =s1+s2;
	s3.print();
	
	system("pause");
	return 0;
}
zhenya.ya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключения C++ Impuls1989 Помощь студентам 2 04.03.2011 00:51
Исключения не работают Syltan Общие вопросы по Java, Java SE, Kotlin 1 09.12.2010 09:17
Исключения yurik1982 Фриланс 9 16.02.2010 00:34
Исключения Rifler Общие вопросы Delphi 5 12.11.2008 00:29
Оператор исключения Titan123 Общие вопросы Delphi 12 08.07.2008 14:30