Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка в абстрактном классе / 5 сообщений из 5, страница 1 из 1
02.02.2007, 01:11
    #34300680
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в абстрактном классе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CBaseClass : public CObject
{
DECLARE_SERIAL(CBaseClass)
...
virtual void PureAbstractFunc() =  0 ;
...
другие методы, не обязательно виртуальные
...
}

IMPLEMENT_SERIAL(CBaseClass, CObject,  1 )
...


А далее:

CMyClass : public CBaseClass 
{
DECLARE_SERIAL(CMyClass)
...
virtual void PureAbstractFunc() {переопределяем...};
...
}

IMPLEMENT_SERIAL(CMyClass, CBaseClass)

и в результате ошибка "cannot instantiate abstract class due to following members" подскажите в чём ошибка ????
...
Рейтинг: 0 / 0
02.02.2007, 03:16
    #34300721
Йа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в абстрактном классе
тут придется или сделать PureAbstractFunc() в CBaseClass просто виртуальной, без pure, или отказаться от макросов DECLARE_SERIAL. Издержки мфц.
...
Рейтинг: 0 / 0
02.02.2007, 19:29
    #34303565
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в абстрактном классе
йатут придется или сделать PureAbstractFunc() в CBaseClass просто виртуальной, без pure, или отказаться от макросов DECLARE_SERIAL. Издержки мфц.

а как отказавшись от макроса DECLARE_SERIAL реализовать сериализацию в MFC ? Если не трудно опишите что сделать
...
Рейтинг: 0 / 0
02.02.2007, 20:07
    #34303613
Йа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в абстрактном классе
дядя билл уже все написал:) PRB: Serializing an Abstract Base Class
...
Рейтинг: 0 / 0
03.02.2007, 23:56
    #34304450
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в абстрактном классе
Есть в MFC такие виды классов :

DECLARE_DYMAMIC() - позволяет определять действительный тип объекта в run-time

DECLARE_DYNCREATE() - позволяет также еще и создавать динамически объект по его типу в run-time

DECLARE_SERIAL() - позволяет также объектам этого класса быть сохраненными в и восстановленными из потока данных.

Каждый последующий включает в себя функциональность предыдущего и добавляет свою.
DYNCREATE подразумевает создане статической функции, которая создает динамически объект и возвращает его.

Это значит что классы, объявленные как DYNCREATE & SERIAL не могут быть абстрактными.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка в абстрактном классе / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]