- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我如何转换 void *something
到标准 C++ 中的对象?具体我想投 void *userdata
至 std::map<String, void*>
这可能吗?我正在尝试:
//void *user_data is a parameter of this function (callback)
std::map <String, void*> user_data_n; //this line is ok
user_data_n = static_cast<std::map<String, void *>>(*user_data); //I get the errors here.
错误:
Spurious '>>' user '>' to terminate a template argument list
Expected '>' before '(' token
'void *' is not a pointer-to-object type
或者有没有更好的方法来携带有关调用者对象的信息和我可以传递给 void *user_data
的一些其他参数? ?
更新:
@aaa carp 建议的屁股我改了>>
至 > >
并且解决了前两个错误。最后一个很奇怪,为什么在设置回调时将它转换到这里而不是在放置该对象时会收到那种消息?
std::map<String, void*> user_data_h;
user_data_h["Object"] = this; //this is a MainController object
user_data_h["h"] = h; //h was defined as int *h
createTrackbar("trackbar_H", winName, h, 255, trackbar_handler, &user_data_h);
其中 createTrackbar 定义为:
int createTrackbar( const string& trackbarname, const string& winname,
int* value, int count, TrackbarCallback onChange, void* userdata);
更新 2:
这样做解决了我的问题,但采用相同的方法,为什么在尝试转换包含在我的 map 对象中的对象时仍然出现错误?
void trackbar_handler(int value, void *user_data){
std::map <String, void*> *user_data_map;
user_data_map = reinterpret_cast<std::map<String, void *> *>(user_data); //WORKED!! ;)
MainController *controller; //the same class type I put using "this" above
controller = reinterpret_cast<MainController *>( user_data_map["Object"]); //ERROR here
int *var = reinterpret_cast<int*> (user_data_map["h"]); //ERROR also here
最佳答案
>>>
应该是 >>
并且您不想取消引用 void 指针,而是将 void 指针转换为所需的指针类型,然后取消引用
@casa 已经为你提供了第二个问题的答案
关于c++ - 将 void *user_data 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766538/
我正在使用 Terraform 来启动一个 Ec2 实例,我想在其中执行一些命令。 我在 aws_instance 资源的 user_data 中放置了一个 bash 文件,但该文件未执行。 ...
我在我的 Terraform 脚本中提供了一个 .sh 文件作为 user_data: resource "aws_instance" "alpha-terraform"{ ami=var.a
您好 EC2 实例已创建,但作为 userdata.sh 一部分的命令未得到执行。当我通过 putty 手动连接到 EC2 时,我发现 EC2 实例中未安装 nginx。为了验证脚本是否正在执行,我添
我正在尝试使用一个通用的 user_data 文件来执行常见任务,例如文件夹创建和某些包安装,并使用一个单独的 user_data 文件来执行应用程序特定的配置 我正在尝试以下 - user_data
我在运行时根据所选句子中的单词从 TreeView 中右键单击创建弹出式上下文菜单。代码: //---- inpropper ------------ gboolean menu_RELEASE(Gt
我如何转换 void *something到标准 C++ 中的对象?具体我想投 void *userdata至 std::map 这可能吗?我正在尝试: //void *user_data is a
将多个模板文件分配给 user_Data 变量。 由于某些架构模式,我们不想将此模板合并到单个文件中。 我是 terraform 的新手,所以在这方面很挣扎。 data "template_file"
我正在使用 libusb-1.0 将 BLE 加密狗与 RCU 配对。 为此,我成功地将配对请求写入加密狗接口(interface)。为了收听加密狗响应,我使用函数 libusb_fill_inter
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
当我在 CodeIgniter 中运行 var_dump($this->session->all_userdata()); 它打印 array (size=5) 'session_id' => s
如果传递给 user_data 的脚本无法运行,是否有可能使 aws_instance 创建失败?例如,退出 1? 我有一个使用depends_on [aws_instance.myVM] 将JSON
我创建 user_data 是这样的: bool MyTreeModel::iter_nth_root_child_vfunc (int index, iterator & iter) const {
当使用 Terraform(或云形成)启动 EC2 时,我们可以通过将一些脚本放在 user_data/remote-exec 中来配置 EC2。或者,我们可以使用 Ansible/Chef 等配置
我正在使用 Terraform 启动 ECS 集群。 我正在使用其他人编写的脚本。除了这一点,我了解大部分启动配置脚本: 我试图找到自动缩放组和 ECS 集群之间的链接。 我有一个 aws_autos
因此,我尝试使用 Packer 创建 AWS 镜像并通过 user_data_file 指定一些用户数据。该文件的内容需要在实例启动时运行,因为它每次都是唯一的。我不能把它烤到 AMI 中。 使用pa
我正在使用 terraform 启动 aws_launch_configuration 实例。 我正在为 user_data 变量使用 shell 脚本,如下所示: resource "aws_lau
我使用 codeigniter 创建了一个带有管理区域和用户区域的站点。但管理员和用户不能同时登录。因为 session user_data 只能使用一次。那么我怎样才能保存另一个 session 数
我正在尝试安装在磁盘上的 CoreOS(410.0.0 稳定版)cloud-config .第一次启动时一切正常,但几天后重新启动后,etcd 出现了问题。 当我启动机器时,输出会生成如下消息: Fa
启动 EC2 时,我可以在 user_data 字段中包含带参数的脚本文件吗?如: user_data = "${file("install_software.sh"), user_name pass
所以我关注了reference如何使用 LowLevelCallable。问题是,我显然无法像以前那样将参数传递给 dblquad 函数(这会破坏我想要加速的所有代码)。我的 C 代码如下所示: #i
我是一名优秀的程序员,十分优秀!