gpt4 book ai didi

c++ - void* 到 vector

转载 作者:行者123 更新时间:2023-11-30 01:18:18 25 4
gpt4 key购买 nike

我有一些大型图书馆的功能。我必须将参数作为 void* 传递。我想传递一个 vector 。我正在使用

传递它
vector<myClass*> myName;

function(...,(void*)&myName,...)

现在在这个函数中,我想将 void* 转换回 vector,但我不知道该怎么做。

我正在尝试类似的东西:

vector<myClass*> myName = static_cast< vector<myClass*> >(voidPointerName);

但是我明白了

error: invalid conversion from ‘void*’ to ‘long unsigned int’

error: initializing argument 1 of ‘std::vector<_Tp, _Alloc>
::vector(size_t, const _Tp&, const _Alloc&)
[with _Tp = myClass*, _Alloc = std::allocator<myClass*>]’

编辑:

我想做的是将指向我自己的类的指针 vector 传递给此函数 http://ftp.heanet.ie/disk1/www.gnu.org/software/libmicrohttpd/microhttpd/microhttpd_10.html ,所以我必须将其转换为 void*,然后将其转换回 vector,因此代码如下所示:

    vector<myClass*> v
MHD_create_response_from_callback (...,HERE_PASS_VECTOR,...);

和这个函数的代码:

    callback(void* cls,...)
{
CAST_CLS_BACK_TO_VECTOR
ITERATE_OVER_VECTOR
}

最佳答案

我猜你实际上是在做类似的事情

vector<myClass*> msisdnStructs;
...
function(...,(void*)&msisdnStructs,...);

在这种情况下,您将传递一个指针 给 vector 。在函数中,您试图将该指向 vector 的指针转换为 vector ,这当然行不通。但是,您可以取消引用传递的 void* 参数(适当转换),并使用它来分配对 vector 的引用(使用引用以避免复制):

vector<myClass*>& myName = *reinterpret_cast<vector<myClass*>*>(voidPointerName);

关于c++ - void* 到 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com