草庐IT

by_value

全部标签

c++ - 无法在监 window 口中评估包含名为 "by"的术语的 Visual Studio 表达式

考虑下面的C++代码:int_tmain(intargc,_TCHAR*argv[]){intby=10;printf("%d\n",by);intbx=20;printf("%d\n",(by+bx));return0;}效果很好。有趣的是“by”变量。如果我尝试为包含by的简单表达式添加监视,结果将是CXX0030:错误:无法计算表达式。例如,在return0的断点上,如果我添加以下监视,我会得到提到的结果:by:10bx:20by+5:CXX0030:Error:expressioncannotbeevaluatedbx+5:25by+bx:CXX0030:Error:expre

c++ - 如何处理失败的方法 : by using exceptions or making the methods return bool?

如何处理失败的方法:使用异常使方法返回bool值第一种方法是当出现问题时抛出异常。但是有问题的代码需要放在tryblock中,然后你需要编写catchblock。您需要检查返回值的第二种方法方法,然后做一些事情。那么基本上不是同一个机制吗?你有两个部分:检测到出现问题然后采取措施。那么我使用哪种方法重要吗? 最佳答案 异常的主要好处是它们是非本地的。您可以在抛出异常的地方捕获几个调用层之外的异常。这样,介于两者之间的代码就不必关心异常(除了确保在展开期间进行适当的清理,即异常安全),这使得异常情况不太可能被遗忘。但这种好处是有代价的

c++ - 如何在 while 循环中计算 "std::cin>>value"?

目前正在自学C++Primer5th。这里有一些我不确定的东西。(我在F.A.Q上找不到确切的相关问题)。考虑这个while循环:while(std::cin>>value){...}\\valueherewasdefinedasint.课本上说:Thatexpressionreadsthenextnumberfromthestandardinputandstoresthatnumberinvalue.Theinputoperator(§1.2,p.8)returnsitsleftoperand,whichinthiscaseisstd::cin.Thiscondition,there

c++ - 错误 C2106 : '=' : left operand must be l-value

查看有关错误C2106的其他问题,我仍然不知道我的代码有什么问题。编译时出现以下错误:c:\driver.cpp(99):errorC2106:'=':leftoperandmustbel-valuec:\driver.cpp(169):errorC2106:'=':leftoperandmustbel-value代码行如下:payroll.at(i)=NULL;//Line99payroll.at(count++)=ePtr;//Line169我不明白为什么会抛出这个错误。在这个项目中,我将我的driver.cpp从员工对象指针数组更改为我制作的自定义Vector模板。我声明Vect

c++ - 模板类中函数指针的成员给出错误 : must be a class or namespace when followed by '::'

我试图在C++中声明一个模板函数指针。templateclassMyClass{public:typedefconstunsignedchar*(T::*MyTemplatedEvent)(unsignedlong&myParameter);};但出于某种原因,我不断收到此错误:'T':mustbeaclassornamespacewhenfollowedby'::'有人能告诉我哪里做错了吗?编译器应该知道T是一个类。它在MyClass声明上方这样说...... 最佳答案 对于T::*MyTemplatedEvent,您期望T是类类

c++ - Ada 到 C++ : Pass an unsigned 64-bit value

我需要将2条数据从Ada程序传递给一些C++代码进行处理。数据-双倍。时间-无符号64位。我能够使用Long_Float(在C++中为double)和Integer(在C++中为int,但显然不是64位)在Ada中创建一个与我的C++方法一起工作的过程。我使用了以下代码(代码不在我身上,所以语法可能略有偏差):proceduresend_data(this:inhidden_ptr;data:inLong_Float;time:inInteger);pragmaimport(CPP,send_data,"MyClass::sendData");现在它正在运行,我正在尝试将时间扩展到完整

c++ - 什么时候需要在 Ruby C 扩展中声明 volatile VALUE?

我找不到很多文档来说明何时适合在Ruby扩展中将VALUE声明为volatile以避免对正在使用的对象进行过早的垃圾回收。这是我到目前为止学到的东西。任何人都可以填空吗?当volatile不需要使用时:在C++对象成员中(因为它们永远不会在堆栈上?)在不调用RubyAPI的C/C++方法中(因为GC在调用RubyAPI之前不会打开)当volatile确实需要使用在调用任何RubyALLOC或malloc宏/函数的C/C++方法中(因为当内存高度碎片化时这些会触发GC)在调用任何Ruby函数的C/C++方法中(例如,rb_funcall、rb_ary_new等)其他避免GC的方法标记正在

c++ - 统一和值(value)初始化

这个问题在这里已经有了答案:g++4.9rejectsvalidaggregateinitializationinC++14(1个回答)关闭7年前。我尝试对构造函数使用值初始化的成员使用值初始化(我不知道我是否真的使用了好的术语......)所以...当我定义:structA{inta_;};我可以使用:Aa{5};assert(m.a_==5);但是,如果我想使用成员大括号初始化器和初始化列表构造器structB{intb_{1};};这无法编译(c++14:http://ideone.com/MQ1FMU):Bb{2};这里是错误:prog.cpp:19:7:error:nomat

c++ - 扭曲的逻辑 : a global variable in one file refers to an extern variable but is also referred by that extern variable

文件A.cpp:#includeexternintiA;externintiB=iA;intmain(){std::cout文件B.cppexternintiB;externintiA=2*iB;编译链接运行,out进来debug和release模式是0,0我的问题是它是如何工作的,为什么在链接阶段没有问题?我正在使用VC++2003。 最佳答案 初始化程序覆盖了extern关键字,因此这没有什么“神奇”:您只是在不同的翻译单元中声明和定义两个完全不相关的变量。来自StandardforProgrammingLanguageC++-

c++ - while (std::cin >> value) 如何工作?

在C++Primer中给出的示例中,#includeusingnamespacestd;intmain(){intsum=0,value=0;while(std::cin>>value){sum+=value;//equivalenttosum=sum+value}std::cout(std::cin>>value)如何返回true?什么是“文件结尾”?看来我必须理解该术语才能理解我的主要问题。谢谢! 最佳答案 overloadedoperator>>function返回对流本身的引用,流有anoverloadedoperator这