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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 17:31   #1
Паыел
 
Регистрация: 26.10.2010
Сообщений: 4
По умолчанию Каким образом перегрузить"-"

Код:
class String{
public:
	char *str,*str_r;
	String();
	~String();
	char * print();
	char * set();
	void run();
	String & operator= (String &);
};

String & String:: operator= (String &s){
	strcpy(str,s.str);
	strcpy(str_r,s.str_r);
	return *this;
}
String::String() {
	str = new char[100];
	str_r = new char[100];
}
String::~String(){
	delete [] str;
	delete [] str_r;
}
char * String::set() {
	cout<<"Enter line:"<<endl;
	cin.getline(str,100);
	return str;
}
char * String::print() {
	cout<<"resultat:"<<endl<<str_r;
	return str_r;
}
void String::run() {
		char * t = new char[100];
		if(strlen(str)>15){
			int j=0;
			for(int i=0;i<strlen(str);i++) {
			if((int)str[i]<97 || (int)str[i]>122) {
				t[j]=str[i];
				j++;
			}
			}
			t[j]='\0';
		}else{
			cout<<"Stroka < 15"<<endl;
			t[0]='\0';
		}
		strcpy(str_r,t);
}

int _tmain(int argc, _TCHAR* argv[])
{ 
	FILE *f;
	f=fopen("text.txt","w+");
	fwrite("Input string:",sizeof(char),13,f);
	String * a = new String;
	String &b = *a;
	char *t=b.set();
	fwrite(t,sizeof(char),strlen(t),f);
	fwrite("\nOutput string:",sizeof(char),15,f);
	a->run();
	String c;
	c=*a;
	char *r=c.print();
	fwrite(r,sizeof(char),strlen(r),f);
	fclose(f);
	delete a;
	getch();
	return 0;
}

Как сделать следующее:
String x=12345;
x=x-4;     // x=1235
Учусь

Последний раз редактировалось ACE Valery; 07.12.2010 в 22:29.
Паыел вне форума Ответить с цитированием
Старый 07.12.2010, 20:53   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так же как и =(вместо равно поставить -)
и писать реализацию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.12.2010, 21:47   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Не знаю может пригодиться что из этого, у самого были запорки над перегрузками, просидел всю ночь сегодня...
Среда разработки: Microsoft Visual Studio 2010
#С "-" нема
Вложения
Тип файла: txt source.txt (11.5 Кб, 147 просмотров)
coNsept вне форума Ответить с цитированием
Старый 07.12.2010, 22:24   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну вообще мешать сишные функции в количествах и перегрузку операторов - не самый лучший подход (разве что у вас BC++ 3.1, что само по себе не очень весело). Можете почитать Страуструпа - там есть все, что для этого нужно.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50