аргумент пустого указателя, проходной буфер

0

У меня есть реализация буфера объектов, которая выглядит так:

class obj_buffer_t
{
public:
    obj_buffer_t(char *heap, size_t size, size_t cnt);
            // Some other stuff
private:
            // Some other stuff
};

Запись_objbuf создается как статический буфер:

static obj_buffer_t::buffer_t<obj_buffer_min_heap_size_t< sizeof(Record_XY), RECORD_SIZE>::result> record_buffer;
obj_buffer_t record_objbuf(record_buffer.heap, sizeof record_buffer.heap, RECORD_SIZE);

В моей программе я хочу читать записи и создавать их в этом буфере, но как мне позвонить на мой метод?

Подпись метода следующая:

Record * getRecord(unsigned & addr, Info & info, void * objbuf = NULL);

Мой вызов:

record = tm.getRecord(p, info, static_cast<obj_buffer_t *>(record_objbuf));

Компилятор дает мне ошибку: недопустимый static_cast от типа obj_buffer_t для ввода obj_buffer_t*

Если я вообще не использую бросок, я получаю:

нет соответствующей функции для вызова getRecord(uint32_t&, Info&, obj_buffer_t&)

Что я здесь делаю неправильно?

Спасибо!

  • 0
    Я не имею в виду это средним способом, но мне кажется, что вы разбираетесь с некоторыми продвинутыми функциями C ++, прежде чем освоите необходимые основы.
Теги:

1 ответ

2
Лучший ответ

Ошибка "Недействительный static_cast от типа obj_buffer_t для типа obj_buffer_t *" означает, что record_objbuff - это сам объект, а не указатель на этот объект. Ваша функция нуждается в указателе. Поэтому вы должны использовать оператор unary & для получения адреса объекта в качестве указателя:

record = tm.getRecord( p, info, (void*)&record_objbuf );
  • 0
    Это то, что я написал в первую очередь, и компилятор все еще выдает мне сообщение об ошибке: нет соответствующей функции для вызова 'getRecord (uint32_t &, Info &, obj_buffer_t *)'
  • 0
    Итак, давайте попробуем record = tm.getRecord( p, info, (void*)&record_objbuf )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню