|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.10.2010, 11:31 | #1 |
Пользователь
Регистрация: 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; } |
14.10.2010, 18:46 | #2 |
Пользователь
Регистрация: 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; } |
26.12.2011, 17:06 | #3 |
Регистрация: 15.11.2011
Сообщений: 8
|
Эмммм... Мне нужно перегрузить оператор вывода, а не ввода... Я просто хочу узнать почему он не может взять более 1 аргумента
|
26.12.2011, 17:14 | #4 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Код:
|
01.03.2013, 15:38 | #5 |
Регистрация: 01.03.2013
Сообщений: 3
|
string &stringerator +=(const string &b)
{ strcat(str,b.str); return *this; } а как исправить этот код? Тоже выдаёт ошибку, описанную выше. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перегрузка оператора -> | 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 |