метаданные своими руками
От: MAKFERSON Россия  
Дата: 14.07.09 09:51
Оценка:
Андрей,

Как побороть отшибку компиляции вашего кода в борланде?
Код ошибки такой:

[C++ Error] Serializer.h(243): E2352 Cannot create instance of abstract class 'StructClassMeta<dotNet::Pair>'
[C++ Error] Serializer.h(243): E2353 Class 'StructClassMeta<dotNet::Pair>' is abstract because of 'MetaClass<dotNet::Pair>::ReadNode(const INode &) const = 0'
Re: метаданные своими руками
От: dmitry_npi Россия  
Дата: 14.07.09 11:36
Оценка:
Здравствуйте, MAKFERSON, Вы писали:

MAK>Андрей,


MAK>Как побороть отшибку компиляции вашего кода в борланде?

MAK>Код ошибки такой:

MAK>[C++ Error] Serializer.h(243): E2352 Cannot create instance of abstract class 'StructClassMeta<dotNet::Pair>'

MAK>[C++ Error] Serializer.h(243): E2353 Class 'StructClassMeta<dotNet::Pair>' is abstract because of 'MetaClass<dotNet::Pair>::ReadNode(const INode &) const = 0'

Ну, очевидно, вы пытаетесь либо создать экземпляр изначально абстрактного класса StructClassMeta (или вернуть/передать по значению), либо, если StructClassMeta — это ваш класс-потомок, вы забыли реализовать в нем функцию ReadNode.
Атмосферная музыка — www.aventuel.net
Re: метаданные своими руками
От: -MyXa- Россия  
Дата: 15.07.09 13:58
Оценка:
Здравствуйте, MAKFERSON, Вы писали:

MAK>Андрей,


MAK>Как побороть отшибку компиляции вашего кода в борланде?

MAK>Код ошибки такой:

MAK>[C++ Error] Serializer.h(243): E2352 Cannot create instance of abstract class 'StructClassMeta<dotNet::Pair>'

MAK>[C++ Error] Serializer.h(243): E2353 Class 'StructClassMeta<dotNet::Pair>' is abstract because of 'MetaClass<dotNet::Pair>::ReadNode(const INode &) const = 0'

Вообще, есть несколько способов.

Вот один:

вместо
static StructClassMeta<Data> g_metaData(DefaultLayout<Data>());

сделать
Layout<Data> l = DefaultLayout<Data>();
static StructClassMeta<Data> g_metaData(l);
Если не поможет, будем действовать током... 600 Вольт (C)
Re[2]: метаданные своими руками
От: MAKFERSON Россия  
Дата: 17.07.09 20:02
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, MAKFERSON, Вы писали:


MAK>>Андрей,


MAK>>Как побороть отшибку компиляции вашего кода в борланде?

MAK>>Код ошибки такой:

MAK>>[C++ Error] Serializer.h(243): E2352 Cannot create instance of abstract class 'StructClassMeta<dotNet::Pair>'

MAK>>[C++ Error] Serializer.h(243): E2353 Class 'StructClassMeta<dotNet::Pair>' is abstract because of 'MetaClass<dotNet::Pair>::ReadNode(const INode &) const = 0'

_>Ну, очевидно, вы пытаетесь либо создать экземпляр изначально абстрактного класса StructClassMeta (или вернуть/передать по значению), либо, если StructClassMeta — это ваш класс-потомок, вы забыли реализовать в нем функцию ReadNode.



Да действительно, передается, точнее возвращается потомок абстрактного класса по ссылке. Но самое интересне что в VC 2005 все компилируется и исполняется, а вот в BB 2006 нет. Я пытаюсь переделать меиаданные из статьи Андрея Мартвнова и использовать XPath parser.
Re[2]: метаданные своими руками
От: MAKFERSON Россия  
Дата: 17.07.09 20:06
Оценка:
Здравствуйте, -MyXa-, Вы писали:

MX>Здравствуйте, MAKFERSON, Вы писали:


MAK>>Андрей,


MAK>>Как побороть отшибку компиляции вашего кода в борланде?

MAK>>Код ошибки такой:

MAK>>[C++ Error] Serializer.h(243): E2352 Cannot create instance of abstract class 'StructClassMeta<dotNet::Pair>'

MAK>>[C++ Error] Serializer.h(243): E2353 Class 'StructClassMeta<dotNet::Pair>' is abstract because of 'MetaClass<dotNet::Pair>::ReadNode(const INode &) const = 0'

MX>Вообще, есть несколько способов.


MX>Вот один:


MX>вместо

MX>
MX>static StructClassMeta<Data> g_metaData(DefaultLayout<Data>());
MX>

MX>сделать
MX>
MX>Layout<Data> l = DefaultLayout<Data>();
MX>static StructClassMeta<Data> g_metaData(l);
MX>



Спасибо, я обязательно попробую, а почему так, какие настройки компилятора влияют? Ведь Microsoft VC2005 проглатывает?
Re[3]: метаданные своими руками
От: -MyXa- Россия  
Дата: 20.07.09 16:23
Оценка:
Здравствуйте, MAKFERSON, Вы писали:

MAK>Спасибо, я обязательно попробую, а почему так, какие настройки компилятора влияют?


Настройки — навряд ли. Скорее всего просто не очень хорошему компилятору попались на зуб не очень хорошие исходники (почему DefaultLayout (Serializer.h), например, сначала используется в FieldAttrubutes::Layout, а потом объявляется? По-моему шаблоны использовать вот так запросто, без forward-declaration-на, нельзя).

MAK>Ведь Microsoft VC2005 проглатывает?


Возможно, он читает мысли разработчика.
Если не поможет, будем действовать током... 600 Вольт (C)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.