草庐IT

const_cast-ing

全部标签

java - 为什么我们总是在 Android/Java 中输入 cast?

我正在编写一个Android应用程序,只是很好奇为什么我们必须始终在Android中进行类型转换。我知道我们需要确定类型才能使我们的代码正常运行,但也许还有其他原因吗?示例:publicclassNavigationextendsActivity{privateDrawerLayoutmDrawerLayout;@OverridepublicvoidonCreate(BundlesavedInstanceState){//otherirrelevantcodemDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);在这个

android - 检测 Google Cast 的使用情况

如何检测我的AndroidTV当前是否来自移动/桌面的GoogleCast接收器?如何从GoogleCast接收器的角度检测当前GoogleCast发送者?如何检测我的Android手机当前是否是GoogleCast发送者? 最佳答案 您可以使用AndroidMediaRouterAPI请求到Cast设备的所有可用路由。然后,您必须连接到每个Cast设备,然后您才能确定应用程序ID,甚至确定媒体是否正在播放。如果您只想知道自己的应用程序是否正在运行,则只需按此过滤媒体路由器请求。只有接收方知道哪些发送方与其相连。在您自己的自定义接收

android - Cast 应用程序中的 "GoogleApiClient is not connected yet"异常

我正在开发一个将内容转换到Chromecast的Android应用程序。有时在onConnected方法的com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks实现中,我得到一个java.lang.IllegalStateException:GoogleApiClientisnotconnectedyet.异常。这是堆栈跟踪:FATALEXCEPTION:mainProcess:com.joaomgcd.autocast,PID:13771java.lang.IllegalStateException:

android - 无法使用适用于 Android 的 aSmack 库创建多用户聊天 (MUC) 室 : "packet.DefaultPacketExtension cannot be cast to packet.MUCUser"

对于一个应用程序,我需要能够创建一个多用户聊天室并加入其中。聊天服务器是一个openfire服务器。我曾经有过:MultiUserChatchat=newMultiUserChat(connection,roomName+"@conference.localhost");chat.join(nickname);当房间不存在时,它会创建房间并加入。但是下一个用户无法加入。他收到404,收件人不可用(404)。这表明聊天室已锁定或其他原因。然后我在文档中找到代码并尝试了以下操作:chat.create(nickname);//Sendanemptyroomconfigurationform

c++ - 引用 - const 指针

我在很多地方都读过关于引用文献:ReferenceislikeaconstpointerReferencealwaysrefertoanobjectOnceinitialised,aReferencecannotbereseated最后一点我想说清楚。这是什么意思?我试过这段代码:#includeintmain(){intx=5;inty=8;int&rx=x;std::cout输出58那么“无法重新设置引用”是什么意思? 最佳答案 这一行:rx=y;不使rx指向y。它使x的值(通过引用)成为y的值。见:#includeintmai

从 int* 到 void* 到 char* 的 C++ static_cast - 你能帮我理解这段代码吗?

我是C++的初学者,我在理解某些代码时遇到了问题。我有一个练习要做,编写返回int大小的函数,并且不使用sizeof()和reinterpret_cast。有人给了我解决方案,但我不明白它是如何工作的。你能帮我理解吗?这是代码:intintSize(){intintArray[10];int*intPtr1;int*intPtr2;intPtr1=&intArray[1];intPtr2=&intArray[2];//Whycastintpointertovoidpointer?void*voidPtr1=static_cast(intPtr1);//whycastvoidpointe

c++ - const char * 作为 C++ 中的函数参数

注意:我知道有很多问题都在讨论这个问题,但我还是个初学者,我无法理解这些示例。我有一个函数原型(prototype)是这样的:intsomeFunction(constchar*sm);这里,如您所知,constchar*表示此函数可以接受const或非constpointer-to-char。我在函数体中尝试了类似的东西:someMemberVar=sm;someMemberVar只是一个指向字符的指针。编译器给我一个错误告诉我:无法从constchar*转换为char*。在这里,我没有传递常量,所以sm或someMemberVar都不是常量。那么,编译器讨论的常量是什么?

c++ - 将任何数据类型序列化为 vector<uint8_t> - 使用 reinterpret_cast?

我没有在搜索中找到任何直接相关的内容,所以如果这是重复的,请原谅。我要做的是通过网络连接序列化数据。我的方法是将我需要传输的所有内容转换为std::vector并在接收方将数据解压缩到适当的变量中。我的方法是这样的:templateinlinevoidpack(std::vector&dst,T&data){uint8_t*src=static_cast(static_cast(&data));dst.insert(dst.end(),src,src+sizeof(T));}templateinlinevoidunpack(vector&src,intindex,T&data){cop

c++ - 从 const 成员函数返回非常量引用

为什么返回对指向的成员变量的引用有效,但另一个无效?我知道const成员函数应该只返回const引用,但为什么指针似乎不正确?classMyClass{private:int*a;intb;public:MyClass(){a=newint;}~MyClass(){deletea;}int&geta(void)const{return*a;}//good?int&getb(void)const{returnb;}//obviouslybad};intmain(void){MyClassm;m.geta()=5;//works????m.getb()=7;//doesn'tcompile

c++ - typedef'ing 函数 *signature* (不是指向的指针),以便它可以被重用?

编辑:动机假设我将一个处理程序类定义为classHandler{public:classMessage{/*...*/};typedefint(*Callback)(Message*msg);voidregisterCallback(intmsgclass,Callbackf);};客户端可以做intf1(Handler::Message*msg){/*handlemessage*/}intf2(Handler::Message*msg){/*handlemessage*/}intmain(){Handlerh;h.registerCallback(1,f1);h.registerCa