Форум программистов, компьютерный форум CyberForum.ru

Как переделать класс из обычного в абстрактный? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 12:47     Как переделать класс из обычного в абстрактный? #1
Значит дело вот в чем. Есть обычный класс. Написанный полностью и работает хорошо. Но нужно сделать из него абстрактный. Что нужно в него добавить чтобы он таковым считался?
Была бы очень благодарна за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 12:47     Как переделать класс из обычного в абстрактный?
Посмотрите здесь:

C++ Абстрактный класс
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... C++
Как реализовать данный абстрактный класс? C++
абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия C++
Как объявить функцию, которая имеет место быть только в некоторых дочерних классах, а базовый класс абстрактный? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
17.10.2011, 13:16     Как переделать класс из обычного в абстрактный? #2
Абстрактный класс - это класс, который содержит только чистые виртуальные функции. Например:

C++
1
2
3
4
5
6
class Abstract
{
public:
   virtual void Do1() = 0;
   virtual void Do2() = 0;
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2011, 13:18     Как переделать класс из обычного в абстрактный? #3
Цитата Сообщение от gooseim Посмотреть сообщение
только чистые виртуальные функции.
или хотя бы одну?
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:19  [ТС]     Как переделать класс из обычного в абстрактный? #4
gooseim, то есть там не может быть других функций, или просто должна быть такая?
В том классе нет наследования, поэтому я и интересуюсь... переопределять виртуальные функции получается негде.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
17.10.2011, 13:19     Как переделать класс из обычного в абстрактный? #5
PointsEqual,
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2011, 13:20     Как переделать класс из обычного в абстрактный? #6
Миака, а что за классы?
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
17.10.2011, 13:21     Как переделать класс из обычного в абстрактный? #7
Миака, могут быть только чистые виртуальные функции, других не может быть.
Покажите условие задачи.
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:28  [ТС]     Как переделать класс из обычного в абстрактный? #8
gooseim, создать абстрактный класс vector который имеет указатель на int, число элементов и переменную состояния. Определелить конструктор без параметров и с параметрами. Определелить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию, которая получает некоторый элемент массива. Определить функцию печати, функции сложения и умножения элементов. Определить методы сравнение.

Класс вектор у меня есть, но он не абстрактный...
LosAngeles
Заблокирован
17.10.2011, 13:31     Как переделать класс из обычного в абстрактный? #9
gooseim,
An abstract class is a class that can be used only as a base class of some other class; no objects of an abstract
class can be created except as subobjects of a class derived from it. A class is abstract if it has at least
one pure virtual function
.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 13:35     Как переделать класс из обычного в абстрактный? #10
Цитата Сообщение от Миака Посмотреть сообщение
В том классе нет наследования, поэтому я и интересуюсь... переопределять виртуальные функции получается негде.
Экземпляр абстрактного класса невозможно создать. Теперь задумайтесь над необходимостью такого класса.
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:36  [ТС]     Как переделать класс из обычного в абстрактный? #11
fasked, ну это же не я придумала, что он там такой нужен) Задание дали в университете. Сама в недоумении.
LosAngeles
Заблокирован
17.10.2011, 13:37     Как переделать класс из обычного в абстрактный? #12
Цитата Сообщение от Миака Посмотреть сообщение
Класс вектор у меня есть, но он не абстрактный...
ну добавь какую-нибудь pure-virtual функцию и он станет абстрактным
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 13:39     Как переделать класс из обычного в абстрактный? #13
Цитата Сообщение от Миака Посмотреть сообщение
ну это же не я придумала, что он там такой нужен) Задание дали в университете. Сама в недоумении.
Либо наследоваться от интерфейса (асбтрактного класса), либо никак.
Цитата Сообщение от Миака Посмотреть сообщение
создать абстрактный класс vector
Может имелось в виду "абстрактный тип данных" :cofee2:
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:40  [ТС]     Как переделать класс из обычного в абстрактный? #14
LosAngeles, просто равную нулю которая и делать то ничего не будет что ли?

Добавлено через 51 секунду
fasked, написано абстрактный класс, но если предположить, что абстрактный тип данных, то что тогда?
LosAngeles
Заблокирован
17.10.2011, 13:40     Как переделать класс из обычного в абстрактный? #15
Миака, да, просто равную нулю
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 13:43     Как переделать класс из обычного в абстрактный? #16
Цитата Сообщение от Миака Посмотреть сообщение
но если предположить, что абстрактный тип данных, то что тогда?
Тогда Ваше задание можно считать выполненным Фактически любой класс с методами можно считать АТД.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2011, 13:44     Как переделать класс из обычного в абстрактный? #17
Если нет функций, которые можно сделать чисто виртуальными, а в универе сказали НАДО сделать абстрактным, то делай чисто виртуальным деструктор ~)
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:45  [ТС]     Как переделать класс из обычного в абстрактный? #18
fasked, ну преподаватель посмотрела и сказала "он не абстрактный". Поэтому я пожалуй на самом деле просто допишу пустую функцию, как посоветовал LosAngeles, и пусть он визуально выглядит как абстрактный класс)

Спасибо большое)

Добавлено через 36 секунд
PointsEqual, о, тоже хорошая идея) Спасибо)
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 13:49     Как переделать класс из обычного в абстрактный? #19
Цитата Сообщение от PointsEqual Посмотреть сообщение
Если нет функций, которые можно сделать чисто виртуальными, а в универе сказали НАДО сделать абстрактным, то делай чисто виртуальным деструктор ~)
Так пользоваться все равно не получится таким классом. Это в любом случае будет только интерфейс. Как работоспособность класса-то демонстрировать? И если это вектор, то память как чистить, которая по идее должна выделяться в конструкторе?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 13:51     Как переделать класс из обычного в абстрактный?
Еще ссылки по теме:

C++ Создать класс - данные - абстрактный базовый класс. Создать производные классы
C++ Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Абстрактный класс/Класс интерфейс C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Миака
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 19
17.10.2011, 13:51  [ТС]     Как переделать класс из обычного в абстрактный? #20
Цитата Сообщение от fasked Посмотреть сообщение
Так пользоваться все равно не получится таким классом. Это в любом случае будет только интерфейс. Как работоспособность класса-то демонстрировать?
У нас преподаватель очень формально смотрит, главное, чтобы программа что-нибудь выводила и, соответственно, запускалась, детально в то, что там работает и как она никогда не всматривалась)
Yandex
Объявления
17.10.2011, 13:51     Как переделать класс из обычного в абстрактный?
Ответ Создать тему
Опции темы

Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru