c++ - 无效指针参数,传递缓冲区

标签 c++

我有一个对象缓冲区实现,如下所示:

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* 的无效 static_cast

如果我根本不使用强制转换,我会得到:

没有匹配函数调用 getRecord(uint32_t&, Info&, obj_buffer_t&)

我做错了什么?

谢谢!

最佳答案

错误“无效的 static_cast 从类型 obj_buffer_t 到类型 obj_buffer_t*”意味着 record_objbuff 是对象本身,而不是指向该对象的指针。您的函数需要指针。所以你应该使用一元 & 运算符来获取对象的地址作为指针:

record = tm.getRecord( p, info, (void*)&record_objbuf );

关于c++ - 无效指针参数,传递缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631925/

相关文章:

c++ - 如何使用一个类使一个变量可用于多个 .cpp 文件?

c++ - 如何将指向 "DEFINED"常量的指针传递给 C 中的函数?

c++ - 编译代码时出错,链接器命令失败?

c++ - 动态分配内存存储说明

c++ - 字符串作为函数中的参数

java - Java 端未找到我的 native 方法

c++ - 列表初始化函数参数的默认值

c++ - 在 C++ 中列出 WMI 类的所有属性

c++ - C++ 中紧密耦合的并行类层次结构

c++ - 应用程序在转移到另一台电脑时无法运行