草庐IT

c++ - 从 C++ 中的模板类实现我自己的数组

我一直在尝试用C++实现一个数组类,并且一直在尝试实现一个doesContain方法来检查特定项目是否在数组中。我想知道这样的事情是否行得通,或者甚至是一种好方法:T*array;intsize;public:array(intlength=50){size=length;array=newT[length];}booldoesContain(constT&obj){boolbFlag=false;for(inti=0;i 最佳答案 如果你想要一个方法来检查一个对象是否在数组中,是的,这是可行的。当然,前提是可以接受运算符==。我建

c++ - 没有 return 语句到达函数末尾

ANSIX3.159-1989,第3.6.6.4节,第33-35行状态:“Ifareturnstatementwithoutanexpressionisexecuted,andthevalueofthefunctioncallisusedbythecaller,thebehaviorisundefined.Reachingthe}thatterminatesafunctionisequivalenttoexecutingareturnstatementwithoutanexpression.”我一直在查看ISO/IEC9899:1999(E)、ISO/IEC9899:2011(E)、I

C++11:当定义移动构造函数时,按值返回对象不会抛出异常吗?

在C++11和更高版本的标准中,是否保证在从函数按值返回类对象时,(可能会抛出异常)复制构造函数不被调用-提供移动构造函数是为这个类定义的?背景:假设structX{X(){}X(constX&){/*codethatmightthrowexceptions*/}X(X&&){/*codethatneverthrowsexceptions*/}...};和Xmy_func(some_type&t){Xx;//codethatmodifiestandxbutneverthrowsexceptionsreturnx;}现在,例如,一个表达式,如some_other_func(my_func

c++ - 访问结构的 union 成员的优雅方式

有没有办法反转#define指令?在下面的例子中#defineZERO0#defineONE1#defineTWO2#defineTHREE3是否可以从整数值2中检索出TWO?此示例来自C代码,但如果需要,我可以使用一些C++代码。我的目标是能够分解一些这种形式的虚假switch-case循环:switch(num){caseZERO:returnstd::to_string(foo.V_ZERO);caseONE:returnstd::to_string(foo.V_ONE);caseTWO:returnstd::to_string(foo.V_TWO);caseTHREE:retu

c++ - C++ 编译器会优化掉未使用的返回值吗?

如果我有一个返回对象的函数,但调用者从未使用过这个返回值,编译器会优化掉拷贝吗?(可能是总是/有时/从不回答。)基本示例:ReturnValueMyClass::FunctionThatAltersMembersAndNeverFails(){//DostufftomembersofMyClassthatneverfailsreturnsuccessfulResultObject;}voidMyClass::DoWork(){//DosomestuffFunctionThatAltersMembersAndNeverFails();//Domorestuff}在这种情况下,Return

c++ - 无法从 char (*)[10] 转换为 char** 作为返回

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Declaringafunctionthatreturna2Darrayinaheaderfile?我正在尝试为二维数组创建一个简单的getter函数,但我似乎无法找出发送它的正确语法。目前,我有以下内容:classSample{public:char**get2D();private:staticconstintx=8;staticconstinty=10;chartwo_d[x][y];};char**Sample::get2D(){returntwo_d;};

c++ - 什么会导致返回函数崩溃? C++

所以我已经调试这个错误几个小时了。我使用Ogre3d编写一个相关的程序只是因为它不加载符号所以它不会让我跟踪堆栈,这使得找到崩溃的位置更加困难。所以,在我调用一个特定的函数之前写我打印出“Starting”然后我调用这个函数并在我打印“Stopping”之后立即。在整个函数中,我打印出字母A-F,其中在函数返回之前打印F(最后一个'}'上方的一行)奇怪的是,当崩溃发生时,它是在打印'F'之后,但没有'Stopping'.这是否意味着崩溃发生在某处之间?我唯一能想到的是在函数期间分配的一些内存的重新分配过程中出现了问题。我从来没有发生过这样的事情,我会继续检查以确保它在我认为的地方出错了

c# - 从 C# 获取 CPU ID 代码到 C++

我有这个C#代码来获取处理器ID,但我无法将它传递给C++,我尝试了很多但我真的做不到,我刚开始使用C++,我希望能够获得C++的CPUID就像我以前用C#得到的一样这是我在C#中的代码:publicstaticstringGetProcessorID(){stringsProcessorID="";stringsQuery="SELECTProcessorIdFROMWin32_Processor";ManagementObjectSearcheroManagementObjectSearcher=newManagementObjectSearcher(sQuery);Managem

C# 应用程序调用 C++ 方法,错误 : PInvoke: Cannot return variants

我正在尝试弄清楚如何将复杂对象从C++dll返回到调用C#应用程序。我有一个简单的方法,它返回一个工作正常的int。谁能告诉我我做错了什么?C#应用程序:classProgram{staticvoidMain(string[]args){//Erroronthisline:"PInvoke:Cannotreturnvariants"vartoken=LexerInterop.next_token();}}C#LexerInterop代码:publicclassLexerInterop{[DllImport("Lexer.dll")]publicstaticexternobjectnex

c++ - 该程序在 main() 上的 'return;' 之后需要很长时间才能关闭

这是我正在处理的代码:#include#includeusingnamespacestd;staticunsignedlongcollatzLength(unsignedlongn){staticstd::mapcollatzMap;intmapResult=collatzMap[n];if(mapResult!=0)returnmapResult;if(n==1){return1;}else{collatzMap[n]=1+collatzLength(n%2==0?n/2:3*n+1);returncollatzMap[n];}}intmain(){intmaxIndex=1;uns