草庐IT

Pointers

全部标签

c++ - 为什么将 "pointer to pointer to non-const"转换为 "pointer to pointer to const"是不合法的

将非const指针转换为const指针是合法的。那为什么将指向非const的指针转换为指向const的指针是不合法的呢?例如,为什么下面的代码是非法的:char*s1=0;constchar*s2=s1;//OK...char*a[MAX];//akachar**constchar**ps=a;//error! 最佳答案 来自标准:constcharc='c';char*pc;constchar**pcc=&pc;//notallowed*pcc=&c;*pc='C';//wouldallowtomodifyaconstobject

c++ - 数组衰减到指针和重载解析

我希望能够在重载决策中区分数组和指针:classstring{public:string(constchar*c_str);templatestring(constchar(&str)[N]);};intmain(){constchar*c_str="foo";stringfoo(c_str);//okwillcallstring(constchar*)stringbar("bar");//callstring(constchar*)insteadofthearrayversion}到目前为止我发现的最好的方法是使用对指针的引用而不是指针:classstring{public:stri

c++ - 关于删除指针的问题。它应该从哪个类中删除?

我有两个四类:MainClass(事物开始的类)XmlReader(用于解析xml文件的类)SerialPortSettings(保存有关从xml文件读取的串行端口的信息,例如波特率、comport等)SerialPortListener(在其构造函数中引用SerialPortSettings对象)MainClass有一个方法可以从xml文件中读取内容。在此方法中,它首先创建一个XmlReader的实例,并为其提供一个xml文件作为构造函数参数。这个xmlReader只需要存在于这个方法中:XmlReaderxmlReader(xmlFile);xmlReader解析xmlFile。M

c# 将文件指针传递给非托管 c++ dll 以用于标准输出

请耐心等待-我是一名C#开发人员,对C++的经验很少,这是一个陡峭的学习曲线!在C#控制台应用程序中,我从非托管C++dll调用一些方法。DLL写入stdout流,尽管c#控制台未拾取它。我找到了以下代码,我将其添加到C++dll中,现在它成功地将“printf”的内容发送到C#控制台。#include#include#include#includevoidredirect_stdout(){inthConHandle;longlStdHandle;FILE*fp;//allocateaconsoleforthisappAllocConsole();//redirectunbuffer

c++ - 确定 8 字节数据的性质

上下文如下:我正在使用Maya插件。其中一项功能要求我将一个元素从大纲窗口拖动到我的插件UI的UI元素上。(Maya中的一切都在Qt中)从大纲中,我可以拖放一个项目。对于任何熟悉Qt的人,您都会知道DropEvent带有一个QMimeData对象。该对象包含来自拖放源(Outliner窗口)的数据。在我的例子中,QMimeData格式是“application/x-maya-data”。QMimeData.data()返回的QByteArray有8个字节长,前4个字节为NULL。所以,我的直觉是这是指向某种数据类型的指针。那么,问题来了:有什么方法可以确定指针指向什么类型的数据?我试过

c++ - 尝试为 Windows API 包装器实现事件处理程序时遇到问题

friend们,我正在尝试实现一个WindowsAPI的包装器,我想从父窗口捕获子窗口事件,所以我做了一个简单的事件处理程序。我使用函数指针来存储回调函数。我是用静态函数做的。请参阅下面的代码。classWidget;typedefvoid(*EventProc)(MSG*EventArgs);classWidget{public:///ConstructorsdestructorandmethodsforRegisteringandCreatingWindowsstaticLRESULTCALLBACKMainProc(HWNDhWnd,UINTmsg,WPARAMwParam,LP

c++ - 不分配任何 char 内存的 const 字符串构造函数?

我正在尝试优化我为处理应用程序协议(protocol)的多个层而编写的一些代码。我自由使用了std::string类,力求简单而不是过早的优化。该应用程序太慢了,valgrind和gprof显示我花费了大量时间来复制构造字符串,因为缓冲区在我的堆栈中向上移动。在我看来,在将字符从系统缓冲区复制到我的最低应用程序缓冲区之后,我应该能够避免再复制数据:毕竟,它在堆栈向上移动时不会发生变化。我的协议(protocol)格式是一个“传输”,由一个或多个以换行符结尾的记录组成,每个记录由几个制表符分隔的字段组成,并以特殊的结尾token。例如RECORD1\tHAS\tTHESE\tFIELDS

C++双指针成员访问

C++(Arduino包装器)问题:我正在一个连接了LCD的Arduino上写一个射击游戏-我有一个基类(Sprite),从这个基类派生出其他类-Alien,Missile和Player.Alien类的构造函数也有私有(private)成员pMissile(指向Missile类的指针)-我认为“对象中的对象”是描述这一点的一种方式。[当Alien发射导弹,它将自己的(x,y)坐标传递给导弹,导弹有自己的从Alien开始移动的方法。的坐标]我的问题是:如何通过Alien访问导弹的坐标?目的?简化的代码如下,我还绘制了类的表示://Bassclass-hasaform/shape,xand

c++ - 使用未知指针类型调用函数重载

所以,我有一个基类PhysicsObject,子类Colliding,以及再次从中派生的两个类,Static和Newtonian.检查碰撞时,我将所有碰撞写入std::vector>collisionVector.(碰撞检测是相当基础的,它并不是问题的真正一部分。)现在,在检测到所有碰撞后,我遍历collisionVector并调用静态collide方法,它具有以下四个重载:voidcollide(Newtonian*first,Newtonian*second);voidcollide(Newtonian*object,Static*obstacle);inlinevoidcolli

c++ - 使用对象的 Google Mock 和 SetArgPointee

我最近在使用GMock,但无法在以下代码中成功使用SetArgPointee。classrox{public:inta,b;rox(){}rox(constrox&ana){a=ana.a;b=ana.b;}roxoperator=(constrox&ana){a=ana.a;b=ana.b;return*this;}};TEST(Statistics,RandomReceived){MockClassms;roxana1,ana2;EXPECT_CALL(ms,Read(_)).Times(1).WillOnce(DoAll(SetArgPointee(ana1),Return(1)