0
Я начинаю с помощью следующего кода:Как изолировать данные (сериализация) производного класса?
#include <iostream>
class Base
{
private:
char a[4];
public:
Base(void){memcpy(a, "Base", 4);}
~Base(void){}
};
class Derived :
public Base
{
private:
char b[8];
public:
Derived(void){ memcpy(b, "Derived", 8);}
~Derived(void){}
};
Чтобы извлечь данные из базового класса я хотел бы сделать следующее:
int main(void)
{
Derived derived;
char* onlyBase = new char[sizeof(Base) + 1];//+1 for '\0'
memcpy(onlyBase, &static_cast<Base>(derived), sizeof(Base));
onlyBase[sizeof(Base)] = '\0';
std::cout << onlyBase;
}
Как я могу получить данные только производную часть класса ?
Почему вы пишете что-то настолько громоздкое и бессмысленное? Разумеется, 'sizeof (static_cast (производный)) + 1' просто' sizeof (Base) + 1'? И вместо 'memcpy' вы могли бы просто написать': a {'b', 'a', 's', 'e'} '. И вам не нужно '(void)', просто '()' будет делать. –
Ну, да. Я отредактирую это. '(Void)' был создан моей IDE, а «memcpy» легче редактировать, потому что мне не нужно разделить строку на отдельные символы. – Machtl
Или создать a и b строки с нулевым завершением? На данный момент они не являются строками «С». Скажите, пожалуйста, это всего лишь какой-то причудливый эксперимент. – codah