草庐IT

Reinterpret_cast

全部标签

c++ - 为什么参数依赖查找不适用于函数模板 dynamic_pointer_cast

考虑以下C++程序:#includestructA{};structB:A{};intmain(){autox=std::make_shared();if(autop=dynamic_pointer_cast(x));}使用MSVC2010编译时,出现以下错误:errorC2065:'dynamic_pointer_cast':undeclaredidentifier如果auto,错误仍然存​​在替换为std::shared_ptr.当我完全符合std::dynamic_pointer_cast的通话条件时,程序编译成功。另外,gcc4.5.1也不喜欢:error:'dynamic_p

c++ - 为什么参数依赖查找不适用于函数模板 dynamic_pointer_cast

考虑以下C++程序:#includestructA{};structB:A{};intmain(){autox=std::make_shared();if(autop=dynamic_pointer_cast(x));}使用MSVC2010编译时,出现以下错误:errorC2065:'dynamic_pointer_cast':undeclaredidentifier如果auto,错误仍然存​​在替换为std::shared_ptr.当我完全符合std::dynamic_pointer_cast的通话条件时,程序编译成功。另外,gcc4.5.1也不喜欢:error:'dynamic_p

c++ - 使用 libavformat 读取位于内存中的文件

我目前正在尝试读取从服务器发送的小视频文件为了使用libavformat读取文件,您应该调用av_open_input_file(&avFormatContext,"C:\\path\\to\\video.avi",0,0,0);问题是在这种情况下文件不在磁盘上,而是在内存中。我目前正在做的是下载文件,使用临时名称将其写入磁盘,然后使用临时文件名调用av_open_input_file,这不是一个非常干净的解决方案.其实我想要的是一个类似av_open_custom(&avFormatContext,&myReadFunction,&mySeekFunction);的函数,但我在文档中

c++ - 使用 libavformat 读取位于内存中的文件

我目前正在尝试读取从服务器发送的小视频文件为了使用libavformat读取文件,您应该调用av_open_input_file(&avFormatContext,"C:\\path\\to\\video.avi",0,0,0);问题是在这种情况下文件不在磁盘上,而是在内存中。我目前正在做的是下载文件,使用临时名称将其写入磁盘,然后使用临时文件名调用av_open_input_file,这不是一个非常干净的解决方案.其实我想要的是一个类似av_open_custom(&avFormatContext,&myReadFunction,&mySeekFunction);的函数,但我在文档中

c++ - 为什么允许将指针转换为引用?

原来是thisquestion的话题,发现OP只是忽略了取消引用。同时,thisanswer让我和其他一些人思考-为什么允许使用C样式强制转换或reinterpret_cast将指针强制转换为引用?intmain(){charc='A';char*pc=&c;char&c1=(char&)pc;char&c2=reinterpret_cast(pc);}以上代码在VisualStudio上编译时没有任何警告或错误(关于类型转换),而GCC只会给你一个警告,如图所示here.我的第一个想法是指针以某种方式自动被取消引用(我通常使用MSVC,所以我没有收到GCC显示的警告),并尝试了以下操

c++ - 为什么允许将指针转换为引用?

原来是thisquestion的话题,发现OP只是忽略了取消引用。同时,thisanswer让我和其他一些人思考-为什么允许使用C样式强制转换或reinterpret_cast将指针强制转换为引用?intmain(){charc='A';char*pc=&c;char&c1=(char&)pc;char&c2=reinterpret_cast(pc);}以上代码在VisualStudio上编译时没有任何警告或错误(关于类型转换),而GCC只会给你一个警告,如图所示here.我的第一个想法是指针以某种方式自动被取消引用(我通常使用MSVC,所以我没有收到GCC显示的警告),并尝试了以下操

c++ - reinterpret_cast 抛弃限定词

我添加了一个关于重新解释变量的问题,但我不知道为什么..intProgressBar(constuint64_tdata_sent,constuint64_tdata_total,voidconst*constdata){Dialog*dialog=reinterpret_cast(data);dialog->setValue((data_sent*100)/data_total);}reinterpret_cast好像不允许说reinterpret_castfrom'constvoid*)toDialog*castsawayqualifiers任何想法 最

c++ - reinterpret_cast 抛弃限定词

我添加了一个关于重新解释变量的问题,但我不知道为什么..intProgressBar(constuint64_tdata_sent,constuint64_tdata_total,voidconst*constdata){Dialog*dialog=reinterpret_cast(data);dialog->setValue((data_sent*100)/data_total);}reinterpret_cast好像不允许说reinterpret_castfrom'constvoid*)toDialog*castsawayqualifiers任何想法 最

c++ - Reinterpret_cast 与 C 风格的类型转换

我听说reinterpret_cast是实现定义的,但我不知道这真正意味着什么。你能提供一个例子说明它是如何出错的,它出错了,使用C-Stylecast更好吗? 最佳答案 C风格的类型转换并不好。它只是按顺序尝试各种C++风格的强制转换,直到找到一个可行的。这意味着当它像reinterpret_cast一样工作时,它与reinterpret_cast有完全相同的问题。但除此之外,它还有这些问题:它可以做很多不同的事情,并且从阅读代码中并不总是清楚将调用哪种类型的转换(它的行为可能类似于reinterpret_cast、const_c

c++ - Reinterpret_cast 与 C 风格的类型转换

我听说reinterpret_cast是实现定义的,但我不知道这真正意味着什么。你能提供一个例子说明它是如何出错的,它出错了,使用C-Stylecast更好吗? 最佳答案 C风格的类型转换并不好。它只是按顺序尝试各种C++风格的强制转换,直到找到一个可行的。这意味着当它像reinterpret_cast一样工作时,它与reinterpret_cast有完全相同的问题。但除此之外,它还有这些问题:它可以做很多不同的事情,并且从阅读代码中并不总是清楚将调用哪种类型的转换(它的行为可能类似于reinterpret_cast、const_c