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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2012, 20:22   #1
7rubin
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 25
По умолчанию ошибка: невозможно создать объект абсрактного класса!

программа для заменны слова в файле, на введенное с клавы слово!реализовать нужно через интерфейс!
ошибка в строчке Text edit;
не получается создать экземпляр класса!(
подскажите, что не так сделал???
спасибо!

Код:
#include  <stdio.h>
#include <conio.h>
#include <iostream>

//интерфейс(смотри readme)
__interface Editing
{
public:
	virtual int Edit(char, char, FILE, FILE) = 0;
};


class Text: public Editing
{
public:
	virtual int Edit(char *_old, char *_new, FILE *f_in, FILE *f_out)
	{	
		char buf[50];
		int sym, j;
		buf[0] = '\0';									//'\0' - это символ конца строки
		j = 0;
		while ((sym = fgetc(f_in)) != EOF)				//считываем символ из файла пока не достигнем конца файла
		{
			if (ispunct(sym) || isspace(sym))				//если считанные символ - знак препинания или разделитель, то
			{
				if (buf[0])								//если первый символ буфера не ноль, т.е. буфер не пуст
				{
					buf[j] = '\0';							//добавляем в конец буфера ноль, чтобы получить нормальную си-строку
					if (!strcmp(_old, buf))					//сравниваем содержание буфера и слово, которое надо заменить
						fputs(_new, f_out);					//если строки совпадают, записываем в выходной файл новое слово
					else
						fputs(buf, f_out);					//если нет, записывем содержимое буфера
					buf[0] = '\0';							//записываем в начало буфера ноль ("помечаем", что буфер пуст)
					j = 0;									//обнуляем указатель на конец буфера
				}
				fputc(sym, f_out);							//записываем считанный символ в файл
			}
			else											//если считанный символ, то
				buf[j++] = sym;							//добавляем считанный символ в конец буфера
		}
		if (buf[0])										//после основного цикла еще раз проверяем буфер, если он не пуст производим сравнение и запись
		{
		  buf[j] = '\0';
		  if (!strcmp(_old, buf))
			 fputs(_new, f_out);
		  else
			 fputs(buf, f_out);
		}
    fclose(f_in);									//закрываем открытый и созданный файлы
    fclose(f_out);
	return 0;
	}
};


int main()
{
	setlocale(LC_ALL, "Russian");
	char _old[20], _new[20], F_in[250], F_out[250];
	FILE *f_in = NULL, *f_out = NULL;
	 printf("Введите имя входного файла(input.txt по умолчанию).\n> ");
   scanf("%s", F_in);
   f_in = fopen(F_in, "r");							//открываем файл для чтения
   if (!f_in)
   {
      printf("Ошибка при открытии файла %s.\n", F_in);
      system("pause");
      return 1;										//rerurn 1 сообщает системе что программа завершилась неудачно
   }
   printf("Введите имя выходного файла(output.txt по умолчанию).\n> ");
   scanf("%s", F_out);
   f_out = fopen(F_out, "w");						//создаем файл для записи результата
   if (!f_out)
   {
      printf("Ошибка при открытии файла %s.\n", F_out);
      system("pause");
      return 1;										//rerurn 1 сообщает системе что программа завершилась неудачно
   }
   printf("Введите искомое слово.\n>");
   scanf("%s", _old);
   printf("Введите новое слово.\n>");
   scanf("%s", _new);
   Text edit;
   edit.Edit(_old, _new, f_in, f_out);
   getch();
}

Последний раз редактировалось ACE Valery; 24.05.2012 в 22:59.
7rubin вне форума Ответить с цитированием
Старый 24.05.2012, 21:21   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

У Вас не соответствуют описания функции Edit в родителе и наследнике - в наследнике она принимает параметры типа char * и FILE *, а в родителе char и FILE
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 24.05.2012, 21:25   #3
7rubin
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 25
По умолчанию

спасибо- спасибо- спасибо)))
выручили!
всё работает!
благодарю за помощь!
7rubin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при создании класса, описывающего графический объект (графика в Borland C) МихаилБ Помощь студентам 7 30.06.2011 22:39
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
Как создать объект в Delphi из класса у которого объявлен только родитель? Tora1000 Общие вопросы Delphi 6 14.12.2009 11:57
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? TwiX Общие вопросы Delphi 3 15.11.2009 00:54