【问题标题】:Recasting *void function arguments重铸 *void 函数参数
【发布时间】:2011-12-08 18:41:02
【问题描述】:

我早些时候发布了一个问题here,如果有人可以帮助我解决以下问题,我想我可以回答:

我有一个函数

double func(void* data)

我想传入一个对象或结构。 (在我的例子中是一个犰狳矩阵,甚至只是和 std::vector)。

如何将指向对象的指针作为参数传递给 func(),然后,一旦进入 func(),如何将 void 指针重新转换为其原始类型?

编辑:这是最终的工作,其中 mat 是犰狳矩阵类:

mat A(2,2);
A << 1 << 2 << endr << 3 << 4; // A=[1,2; 3,4]
func(&A);

在函数中:

double func(void* data) {
   mat* pB = (mat*)(data);
   mat B = pB[0];
}

矩阵 B 和 A 现在包含相同的数据。

【问题讨论】:

    标签: void-pointers


    【解决方案1】:

    如果我理解正确,你需要这样的东西。

    double func(void* data_v) {
      struct my_type * data = data_v;
    }
    
    func((void*)my_data);
    

    【讨论】:

    • 谢谢。这为我指明了正确的方向。请参阅我上面的编辑以了解最终的工作。
    • 是否总是需要第二个指针?难道不能回收同样的*data_v吗?
    猜你喜欢
    • 2013-04-15
    • 2016-01-04
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多