草庐IT

be_false

全部标签

c++ - 比较两个具有相同值的 TCHAR 结果为 false

我正在尝试检查我的应用程序路径,如果它不是指定路径,则移动它。我觉得我的代码很可靠,但它不能正常工作。TCHARpCheck[MAX_PATH];TCHARxPath[MAX_PATH];GetModuleFileName(NULL,xPath,MAX_PATH);if(SHGetSpecialFolderPath(HWND_DESKTOP,pCheck,CSIDL_DESKTOP,FALSE)){wcscat(pCheck,L"\\NewFile.exe");MessageBox(NULL,pCheck,NULL,NULL);MessageBox(NULL,xPath,NULL,NU

c++ - 使用 'g++' 结果为 "warning: will never be executed"

我继承了一个C++项目。我在RHELbuild5.5与GCC4.1.2通过makefile。该项目很大(数百个文件),总的来说代码还不错。然而,在编译过程中,我经常收到一个GCC警告,上面写着(prefix"/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2"):/bits/allocator.h:Inconstructor‘std::allocator::allocator()[with_Tp=char]’:/bits/allocator.h:97:warning:willneverbeexecuted

c++ - BST : void value not ignored as it ought to be

我试图在C++中实现BST。这是一个特定的成员函数,用于执行顺序遍历并返回包含树元素的vector。现在问题出现在我设置为当前节点的堆栈pop()函数上。void值没有被忽略,因为它应该被忽略我知道在前面的pop()调用之后空堆栈将返回一个空值。但是解决这个问题的方法是什么,因为这个traversalalgorithm需要它从堆栈中检索最后一个节点。vectorBSTree::in_order_traversal(){vectorlist;stackdepthStack;Node*cur=root;while(!depthStack.empty()||cur!=NULL){if(cur

c++ - 修复 GCC 中的 "comparison is always false ..."警告

我遇到了一个我确定很容易解决的问题,但我不知所措......我有一个执行以下代码的模板:Tvalue=d;if(std::numeric_limits::is_signed){if(value现在,出于显而易见的原因,当此代码针对无符号类型编译时,GCC会给我一个警告(由于数据类型的范围有限,比较总是错误的)。我完全理解这背后的原因,我进行了numeric_limits检查以查看是否可以让编译器关闭它(它适用于MSVC)。唉,在GCC下,我得到了警告。有什么办法(除了禁用警告,我什至不知道你是否可以使用GCC)来修复这个警告?代码永远不会被调用,我假设优化器也会编译它,但我无法摆脱警告

c++ - (C++ 线程): Creating worker threads that will be listening to jobs and executing them concurrently when wanted

假设我们有两个worker。每个worker都有一个0和1的id。还假设我们一直有工作到达,每个工作也有一个标识符0或1指定哪个worker必须做这个工作。我想创建2个线程,它们最初是锁定的,然后当两个作业到达时,解锁它们,每个线程都完成它们的工作,然后再次锁定它们,直到其他作业到达。我有以下代码:#include#include#includeusingnamespacestd;structjob{threadjobThread;mutexjobMutex;};jobjobs[2];voidexecuteJob(intworker){while(true){jobs[worker].

c++ - GCC 编译错误 : declaration of ‘strlen’ must be available

我的问题是,当我想制作一个下载的库时,我从GCC得到了一些奇怪的编译错误。编译器要求更正的代码似乎是正确的。报错都是这样的:Catalogue.h:96:error:therearenoargumentsto‘strlen’thatdependonatemplateparameter,soadeclarationof‘strlen’mustbeavailable这是第96行附近的代码:GaCatalogueEntry(constchar*name,T*data){if(name){_nameLength=(int)strlen(name);//LINE96//copyname_name

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++ - 我们在A(派生类) "is a"B(基类)时使用继承。当A "can be"B或C时我们怎么办?

抱歉提出这个丑陋的问题,但我不知道该如何表达。我将举例说明我的意思:人类可以是法师也可以是战士,所以法师和战士可以继承人类。但是,如果Orc也可以兼而有之呢?我们不能说“人是战士”或“战士是人”。Orc和Human(或者一个父类,Humanoid)是否继承了所有的技能,然后选择使用什么?我不知道是否应该标记特定语言,因为这是关于oop的一般性问题,但由于不同的语言对同一问题可能有不同的方法,所以我更喜欢从C++的角度来回答。 最佳答案 改进您的建模抽象类种族,具体类人类、兽人等...抽象类Class,具体类Mage、Warrior等

C++ 'true' 和 'false' 关键字在 Visual C++ 6.0 中突然不正确或错误

我的编译器(VC++6.0sp6)显然已经疯了。在某些代码片段中,我看到“boolmybool=true;”评估并分配false,反之亦然。将true/false关键字更改为1/0使其工作正常。在不更改true/false关键字的情况下,相同的代码可以在其他地方正常编译。这可能是什么原因造成的?我的第一个想法是RAM或磁盘损坏,但一切都很好。我离重新格式化我的驱动器并重新安装所有东西不远了,但我很害怕我仍然会看到同样的不当行为。在某个地方的宏或链接库在技术上是否有可能搞砸“true”和“false”的含义?更新:谜团已揭开。我机器上的一个环境变量标志被设置为“false”,一些预处理器

C++ 以编程方式转换 : can it be done?

假设我有一个Base类和几个Derived类。有什么方法可以将对象转换为派生类之一而无需编写如下内容:stringtypename=typeid(*object).name();if(typename=="Derived1"){Derived1*d1=static_cast(object);}elseif(typename=="Derived2"){Derived2*d2=static_cast(object);}...else{...} 最佳答案 不要。阅读多态性。几乎每一种“动态转换”情况都是多态难以实现的例子。无论您在动态类型