草庐IT

Implicit_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++ - 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

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - 为什么 std::any_cast 不支持隐式转换?

当可以从实际存储的类型隐式转换到请求的类型时,为什么std::any_cast会抛出std::bad_any_cast异常?例如:std::anya=10;//holdsanintnowautob=std::any_cast(a);//throwsbad_any_castexception为什么不允许这样做,是否有允许隐式转换的解决方法(以防std::any持有的确切类型未知)? 最佳答案 std::any_cast是根据typeid指定的。报价cppreference对此:Throwsstd::bad_any_castifthet

c++ - 为什么 std::any_cast 不支持隐式转换?

当可以从实际存储的类型隐式转换到请求的类型时,为什么std::any_cast会抛出std::bad_any_cast异常?例如:std::anya=10;//holdsanintnowautob=std::any_cast(a);//throwsbad_any_castexception为什么不允许这样做,是否有允许隐式转换的解决方法(以防std::any持有的确切类型未知)? 最佳答案 std::any_cast是根据typeid指定的。报价cppreference对此:Throwsstd::bad_any_castifthet