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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2010, 11:31   #1
Jane-sad
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 22
По умолчанию C++ Перегрузка оператора += и >>

Пожалуйста, очень срочно нужно, исправьте две ошибки. В программе все операторы описала. Сегодня добавила два += и >>. Весь код показывать нет смысла. Программа большая. Только по ним двум есть проблема.
1)По оператору += все вроде нормально, выводит на экран результат, но потом когда переходит на return 0 снимается и на деструкторе и на экране сообщение"afte Normal block (#58 at 0x00441740)"
2) По второму что-то не то написала и соответственно и результатат не вижу.
Очень прошу, исправьте, мне нужно в течение часа. Извините за то что прошу срочно. Непредвиденные обстоятельства.
class string
{
char *str; //строка
int size; //размер строки

public:
string(); //конструктор по умолчанию
string(char*a); //конструктор
string(const string &s); //конструктор копий
~string(); //деструктор
string &operator+=(const string &);
friend istream &operator>>(istream &,string &);
};
string::string()
{
str=NULL;
size=0;
}


string::string(char*s)
{ int l;
l=strlen(s)+1;
str=new char[l];
if(!str)
{cout<<"Oshibka pamyati\n";
exit(1);}
size=l;
strcpy(str,s);
}

//конструктор копий
string::string(const string &a)
{
int l;
l=strlen(a.str)+1;
str=new char [l]; //выделяем память для новой копии
if(!str)
{cout<<"Oshibka pamyati\n";
exit(1);}
size=l;
strcpy(str,a.str);

}
//деструктор
string::~string()
{
//if(str)
delete[]str;
}

string &string:perator +=(const string &b)
{

strcat(str,b.str);

return *this;

}

istream &operator>>(istream &h,string &ob)
{char *c;
cout<<"vvedite simvol: ";
cin>>c;
ob.str=c;
return h;
}
int main()
{
string s1("Peregruzka");
string s2("Operator");
string s3("");

cout << "*********>>:"<<endl;

string d2;
cin>>d2;

cout << "*********+=:"<<endl;
s1+=s2;
s1.print();


return 0;

}
Jane-sad вне форума Ответить с цитированием
Старый 14.10.2010, 18:46   #2
Bernarditto
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 11
По умолчанию answ

istream &operator>>(istream &h,string &ob)
{
char *c;
cout<<"vvedite simvol: ";
h>>c; //попробуйте так,ибо обьект h возвращаем а не cin
ob.str=c;
return h;
}
Bernarditto вне форума Ответить с цитированием
Старый 26.12.2011, 17:06   #3
vbnmrf
 
Регистрация: 15.11.2011
Сообщений: 8
По умолчанию

Эмммм... Мне нужно перегрузить оператор вывода, а не ввода... Я просто хочу узнать почему он не может взять более 1 аргумента
vbnmrf вне форума Ответить с цитированием
Старый 26.12.2011, 17:14   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Код:
class string
Назвали бы как-нибудь по-другому. А то, кто знает, с конфликтом имён столкнётесь. Всё-таки в С++ есть такой класс.
_-Re@l-_ вне форума Ответить с цитированием
Старый 01.03.2013, 15:38   #5
милица
 
Аватар для милица
 
Регистрация: 01.03.2013
Сообщений: 3
По умолчанию

string &stringerator +=(const string &b)
{

strcat(str,b.str);

return *this;

}

а как исправить этот код?
Тоже выдаёт ошибку, описанную выше.
милица вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка оператора -> alex_alpha Общие вопросы C/C++ 5 23.06.2010 19:07
перегрузка оператора << z3rg Общие вопросы C/C++ 18 02.03.2010 02:58
перегрузка оператора [] в c++ terminadoor Общие вопросы C/C++ 3 21.01.2010 15:44
Перегрузка оператора + z3rg Общие вопросы C/C++ 1 22.03.2009 03:06
Перегрузка оператора + (С++) MjRed Помощь студентам 1 15.12.2008 18:57