gpt4 book ai didi

c++ - LONG_PTR 的迭代器

转载 作者:行者123 更新时间:2023-11-28 01:08:48 26 4
gpt4 key购买 nike

我能否将指向集合元素的迭代器转换为 LONG_PTR?

PS: LONG_PTR 是什么我不是很明白?

这是一个在运行时弹出错误的示例代码

#include <windows.h>
#include <set>
#include <string>
using namespace std;

void func(LPARAM lp)
{
set<string>::iterator *it = reinterpret_cast<set<string>::iterator*>(lp);

string s = *(*it); //runtime-error
}

int main()
{
char *arr[] = {"0", "1", "2", "3", "4", "5"};

set<string> s(arr, arr+5);
set<string>::iterator it = s.begin()++;

LONG_PTR lp = reinterpret_cast<LONG_PTR>(&*it);

func(lp);
}

最佳答案

LONGPTR 是一个 __int3264 .

在任何情况下,您都不能将迭代器转换为这种类型,因为迭代器不是指针。但是,您可以获取迭代器指向的元素的地址(使用 &*it),假设存储在容器中的对象类型不会重载一元 &(如果它确实重载了一元 &,那么它就是一个非常糟糕的类)。

关于c++ - LONG_PTR 的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4652959/

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