Я застрял на некоторое время над этой проблемой, и мне нужна ваша помощь.
Мое приложение C ++ работает на нескольких сайтах exec. Моя проблема в том, что я не могу передать объекты, содержащие виртуальную таблицу, потому что сайты не разделяют память (таким образом, виртуальный метод из данного объекта приведет к неопределенному поведению). Под «я не могу пройти» я имею в виду: я не хочу никакой виртуальной таблицы.
Самое интересное, что есть не только наследование, но также шаблоны и жуткая концепция ...
Вот код
// "Main" code
List< Animals, 5 > list;
List< Animals, 8 > list2;
list.concatenate( list2 );
// GenericList.hpp
template< Type >
class GenericList
{
virtual getBuffer(void) = 0;
virtual getSize(void) = 0;
void concatenate( GenericList<Type> gList)
{
int size = gList.getSize(); // Call to the child...
...getBuffer()...
// processing, etc.
}
}
// List.hpp
template< Type, Size_ >
class List : public GenericList< Type >
{
int getSize()
{
return Size_;
}
Type * getBuffer()
{
return buffer;
}
Type buffer[Size_];
}
Как мне избавиться от наследства?
РЕДАКТИРОВАТЬ / В свете первых нескольких ответов, я могу вам сказать, что я не могу реализовать лучшую сериализацию, код является приватным.