В настоящее время я изучаю C++, и для этого я пишу простой конвертер изображений.Дизайн классов, содержащих разные данные
Я хотел бы иметь базовый класс изображения, который содержит различные фрагменты памяти изображения, например DXTn или BMP. Как правильно спроектировать мой класс, который может содержать эти разные типы данных? Есть ли лучший способ хранения памяти в (умном) указателе?
class Image
{
public:
void loadDXT() { }
void loadBMP() { }
private:
char* data1;
std::unique_ptr< char* > data2;
}
Или было бы лучше, чтобы получить более конкретный classfrom простого BaseClass:
class baseImage
{
public:
enum imgType { BMP , DXT };
void load() = 0;
}
class BMPImage : public baseImage
{
//bmp specific stuff here
}
Это не является специфичным только для этого ImageCLASS, я вообще любопытно, как мне создать классы которые содержат разные данные.
спасибо.
Идите со вторым - он добавляет слой абстракции, сохраняя отдельные предметы отдельно. –
Определенно второй. При написании C++ вы действительно хотите использовать абстрактные базовые классы, поскольку они являются основой ООП. –