Как побороть отшибку компиляции вашего кода в борланде?
Код ошибки такой:
[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'
Здравствуйте, 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.
Здравствуйте, 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.
Здравствуйте, -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>
Здравствуйте, MAKFERSON, Вы писали:
MAK>Спасибо, я обязательно попробую, а почему так, какие настройки компилятора влияют?
Настройки — навряд ли. Скорее всего просто не очень хорошему компилятору попались на зуб не очень хорошие исходники (почему DefaultLayout (Serializer.h), например, сначала используется в FieldAttrubutes::Layout, а потом объявляется? По-моему шаблоны использовать вот так запросто, без forward-declaration-на, нельзя).
MAK>Ведь Microsoft VC2005 проглатывает?
Возможно, он читает мысли разработчика.
Если не поможет, будем действовать током... 600 Вольт (C)