У меня возникла проблема, к которой я не нашел простого решения.Дизайн класса C++ - Условные типы данных
У меня есть класс изображения:
class Image
{
public:
Image();
~Image();
private:
int m_rows;
int m_cols;
int m_bGray;
/* HOW TO IMPLEMENT THIS?
if(m_bGray)
std::vector<std::vector<unsigned char>> m_data;
else
std::vector<std::vector<std::vector<unsigned char>>> m_data;*/
BITMAPFILEHEADER *m_bmpHeader; // store headers in case we need to write back to HDD
BITMAPINFOHEADER *m_bmpInfo;
};
Мой объект класса будет либо R-G-B или серый в любой данный момент времени.
Означает ли это требование сохранения указателя на необработанные данные и управления памятью и освобождением памяти? Если да, я бы пошел arrays
, чем vectors
Есть ли идиома, которая имеет прямое решение для таких сценариев?
Один подкласс для серого и другого цвета? – John3136
Вопрос: Что, если какой-то код выполняет 'm_bGray =! M_bGray;'? Вы смешиваете переменную времени выполнения с хранилищем времени компиляции. – luk32
Как в сторону. При хранении триплета rgb. Вы можете избежать вложенного вектора. Вы знаете, что это будет структура, содержащая 3 uchars. Таким образом, вы можете использовать вектор 'std :: tuple' или определенный' rgb' struct/class. –