草庐IT

VARIABLES

全部标签

c++ - 用文字初始化引用成员变量

在下面的代码中,我用文字初始化了一个引用变量。classABC{public:constint&a;ABC():a(43){}voidnewfoo(){printf("NEWFOO%d",a);}};intmain(){ABCobj;obj.newfoo();}这个程序的输出是NEWFOO32767,当我知道下面的代码可以正常工作时,这似乎不合逻辑。intmain(){constint&b=3;printf("%d",b);}这里发生了什么?如果编译器在初始化引用变量期间声明了一些临时变量,那么该变量的范围是否会在main内部,因为该类在全局范围内? 最佳答

c++ - Lambda 标识符是如何捕获的?

我已经发布了thisanswer,其中包含代码:templateautovertex_triangle(constsize_tindex,constvector>&polygon){constauto&first=index==0U?polygon.back():polygon[index-1U];constauto&second=polygon[index];constauto&third=index==size(polygon)-1U?polygon.front():polygon[index+1U];return[&](auto&output){output.push_back(

c++ - 通过 boost lambda 占位符访问成员变量

我正在尝试使用lambda表达式打印STL映射中所有项目的第二个成员变量maptheMap;for_each(theMap.begin(),theMap.end(),cout::second,_1)但这不是编译。我基本上想取消引用占位符。知道我在这里缺少什么吗?提前致谢! 最佳答案 尝试:for_each(theMap.begin(),theMap.end(),cout::value_type::second,_1) 关于c++-通过boostlambda占位符访问成员变量,我们在Sta

c++ - 有没有一种通用的方法可以在 C++ 中的堆栈上保留状态变量?

在我目前正在处理的程序中,许多对象包含与对象一起持续存在的状态变量。例如表示3d模型中的点的对象可能包含一个变量来控制是否已选择该点进行编辑。通常,这些状态变量中的一个或多个将被一段代码临时修改,例如voidMyFunc();{mytypetemp=statevar;statevar=newvalue;DoSomething();statevar=temp;}这有问题,好像DoSomething()抛出异常,statevar没有正确恢复。我计划的解决方法是创建一个新的模板类来恢复其dtor中的值。有点像templateclassPushState{PushState(TYPEVar){

c++ - C++中一个变量定义列表中的常量和非常量

为什么不能在一个定义列表中定义const和non-const变量?例如,在使用for循环时:for(size_ti=0,constiCount=data.size();i我想从const-correctness的角度来看会更好。附言我第一次问错了这个问题。它更多的是针对语言设计者而不是“为什么它可以在我的机器上编译?”。我想说的是,如果在下一个C++标准中将其作为语法糖来实现,那就更好了。这也将防止在每次循环迭代中调用data.size()。我的意思是,为什么不扩展当前的C++变量定义列表以支持单个定义列表中的const和non-const? 最佳答案

java - 有没有办法使用 C++ 从 Java 进程中读取值?

我正在开发一个C++应用程序,它需要从Java进程中获取一些信息。我已经在使用指针从某个不在java上运行的模块的内存中获取数据。我发现这对于java是不可能的,因为它会切换内存地址,所以我想知道我是否可以做类似的事情来获取java变量的值。我可以访问java应用程序的源代码,但我的代码应该能够从原始代码中获取值。到目前为止,我所做的一切都是基于64位Windows控制台应用程序。 最佳答案 我不知道如何在应用程序之间共享随机存取内存,但是文件I/O可能工作得很好。如果您以前没有使用过这两种语言的文件I/O,都有很好的教程。用jav

c++ - 程序不会运行非常大的数字

我对编程还很陌生,所以我用C++编写了这个程序,它将接受一个数字并找到它的质因数,这很好用!除非它对于int变量来说太大了。现在我试着改变所有的int变量都变成longlong变量所以没关系,但这似乎并不能解决问题。程序如下:#includeusingnamespacestd;boolprime(longlongrecievedvalue){//startsafunctionthatreturnsabooleanwithparametersbeingafactorfromanumberlonglongj=1;longlongremainderprime=0;boolended=fals

c++ - dll 的环境变量与 exe 不同

我正在Windows7上调试一个64位应用程序,其中c#exe使用nativec++dll。这两个应用程序的环境变量似乎不同,即使它们都在同一进程中执行。调用System.Environment.SetEnvironmentVariable怎么可能对getenv()返回的值没有影响? 最佳答案 环境变量只是一个数据block,它在启动时由窗口传递给进程。您正在使用的运行时函数(System.Environment的BCL和getenv的CRT)可能会在启动期间复制环境,这意味着它们不是在相同的“环境”变量上运行。从概念上讲,他们必须

C++ 访问器——我应该返回一个指向成员变量的指针还是返回实际的成员变量本身?

我希望这里有一个简单的问题。对于我的类的成员变量,它们都是私有(private)的,我应该使用访问器返回一个指针还是返回变量本身?还是我应该做点别的?例子:unsignedint*Object::GetObjectIDPointer(){return&objectID;}或unsignedintObject::GetObjectID(){returnobjectID;} 最佳答案 这在很大程度上取决于你想用它们做什么:如果你计划你的类的用户能够在你的类中修改变量(这是一个可怕的和强烈反对的事情)你可以返回指针或引用;否则,返回变量本

c++ - 定义或绑定(bind)成员函数到 'variable like' 关键字。不带括号的执行

有没有办法将成员函数绑定(bind)到成员变量之类的东西?假设我有一个简单的vector结构:structVec3{intx,y,z;Vec2xy()const{returnVec2(x,y);}Vec2xz()const{returnVec2(x,z);}Vec2yz()const{returnVec2(y,z);}}现在我可以像这样使用它了:Vec3t={5,3,2};Vec2s=t.xy()+t.yz();但是有没有办法像这样使用它:Vec3t={5,3,2};Vec2s=t.xy;//thishere?executefunctionwithout'()'.