【发布时间】:2013-10-28 18:22:23
【问题描述】:
我有一个如下所示的对象缓冲区实现:
class obj_buffer_t
{
public:
obj_buffer_t(char *heap, size_t size, size_t cnt);
// Some other stuff
private:
// Some other stuff
};
record_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));
编译器给了我错误:从obj_buffer_t 类型到obj_buffer_t* 类型的无效静态转换
如果我根本不使用演员表,我会得到:
没有匹配函数调用getRecord(uint32_t&, Info&, obj_buffer_t&)
我在这里做错了什么?
谢谢!
【问题讨论】:
-
我的意思不是刻薄,但在我看来,您在掌握所需的基础知识之前就在搞乱一些高级 C++ 功能。
标签: c++