Этот вопрос может быть немного глупым, но я все еще довольно новичок в C ++, и я давно с ним что-то делал.
У меня есть класс с именем LEDBitmap
, которыйдолжен содержать ширину, высоту и данные растрового изображения только с единицами и нулями.
В заголовочном файле у меня есть следующая структура:
struct MapData
{
uint8_t width;
uint8_t height;
uint8_t[][] data;
};
А также следующий конструктор,Деструктор и переменная-член:
class LEDBitmap
{
public:
LEDBitmap(uint8_t width, uint8_t, height, uint8_t data[][]);
LEDBitmap(uint8_t width, uint8_t, height);
virtual ~LEDBitmap() { };
[...]
private: //members
MapData _map;
};
Теперь я хочу написать конструкторы и, возможно, деструктор, и пока у меня есть следующее для первого конструктора:
//initialize an empty bitmap with only zeros in it
LEDBitmap::LEDBitmap(uint8_t width, uint8_t, height) {
_map.width = width;
_map.height = height;
_map.data = new uint8_t[width][height];
}
Будет ли эта реализация работать?(вероятно, нет) И стоит ли мне на самом деле реализовывать деструктор?
РЕДАКТИРОВАТЬ: скорректировал мой код в соответствии с предложением @ gsamaras._map
раньше был *_ptr
раньше.
РЕДАКТИРОВАТЬ: друг предложил использовать calloc()
вместо.У меня при этом теперь есть:
LEDBitmap::LEDBitmap(uint8_t width, uint8_t height) {
_map.width = width;
_map.height = height;
_map.data = calloc(width*height*(sizeof(uint8_t));
}
и
class LEDBitmap
{
public:
LEDBitmap(uint8_t width, uint8_t, height, uint8_t data[][]);
LEDBitmap(uint8_t width, uint8_t, height);
virtual ~LEDBitmap() {
free(_map.data);
};
private: //members
MapData _map;
};