草庐IT

条件分支

全部标签

c++ - 是否可以在 C++ 中使用带有模板参数的宏条件?

类似于:templateclassComputer{intmemory;intstorage;#ifHOLD_MANUFACTURERchar*manufacturer;#endif};我需要它来创建几乎相同类的两个变体,而其中一个变体出于性能原因较轻。我不想使用单独的类来包装较轻的类。如果是,是否可以是任何类型(不仅仅是上面示例代码中的bool)?也许只有原始类型?枚举呢?这段代码对我不起作用,但我希望我只是错过了一些小东西。 最佳答案 您可以在策略方法中创造性地使用空基优化来实现几乎您想要的:structNO_MANUFACTU

c++ - 带 if 条件的作用域锁

我想创建作用域锁,但我想要类似的东西:{if(lockRequired)boost::mutex::scoped_lock(Mutex);//Afterthislinewegooutofscope/*HereIalsowanttohaveMutex*/}如果条件为真,我想要锁定互斥锁,但在升级范围内。我知道我可以使用简单的.lock并在范围末尾使用.unlock但我有很多返回路径。我还可以在范围内创建一些SynchronizationGuard并且whed析构函数被称为unlockmutex但这不是干净的解决方案。一些建议?最好的问候。 最佳答案

c++ - X 宏中元素的条件定义

假设我有一个XMacro对于定义如下的项目列表:#defineX_MACRO(FN)\FN(foo)\FN(bar)\FN(zip)这很好用,我可以调用它来为每个元素生成相同的模板化代码,例如:#definexstr(s)str(s)#definestr(s)#s#definePRINT_X(E)voidprint_##E(){std::cout这会生成类似于voidprint_foo(){std::cout的函数对于每个X_MACRO元素。到目前为止,还不错。但是,现在我希望X宏元素的列表以预处理器宏为条件。例如zip如果USE_ZIP元素应该只包含在X宏中被定义为。当然,我不能放#

c++ - 这个条件是如何解析的?

对于某些上下文,条件用于查找链表循环的普通类型算法:来自链接:http://vijayinterviewquestions.blogspot.com/2007/05/how-would-you-detect-loop-in-linked.htmlp=head;q=head->next;while(p!=NULL&&q!=NULL){if(p==q){//Loopdetected!exit(0);}p=p->next;q=(q->next)?(q->next->next):q->next;}//Noloop.行是什么:q=(q->next)?(q->next->next):q->next

c++ - 可以在 C++03 中有条件地声明友元类吗?

我只想在某些(编译时)条件为真时声明一个友元类。例如://pseudo-C++classFoo{if(some_compile_time_condition){friendclassBar;}};我在互联网上没有找到任何解决方案。我浏览了问题的所有答案GeneratingStructuresdynamicallyatcompiletime.他们中的许多人使用C++11std::conditional,但我想知道是否可以在C++03不使用预处理器的情况下执行此操作.此解决方案https://stackoverflow.com/a/11376710/252576将不起作用,因为friend

c++ - 条件运算符可以返回引用吗?

我遇到了一行代码,但从未想过它会运行良好。我认为条件运算符的返回值不适用于引用。一些伪代码:#includeusingnamespacestd;classA{public:A(intinput):v(input){};voidprint()const{cout谁能解释一下?谢谢。 最佳答案 您对条件运算符的假设是错误的。表达式的类型是表达式c.getA()和c.getB()具有的任何类型,如果它们具有相同的类型,并且如果它们表示左值,那么整个表达式也是如此。(具体规则在C++标准的§5.16中。)你甚至可以这样做:(conditio

c++ - 静态局部变量中的竞争条件

我目前正在阅读EffectiveC++。有一个关于使用静态局部变量的部分,它说如果多个线程访问一个静态变量,则在该变量的初始化期间可能会出现竞争条件。至少这是我的解释。这是真的?例如,在C#中,类静态变量的初始化永远不会出现竞争条件。例如,此代码在静态变量初始化期间是否存在竞争条件?FileSystem&tfs(){staticFileSystemfs;returnfs;}以下是书中的异常(exception)情况。Here'sthetechniqueappliedtobothtfsandtempDir:classFileSystem{...};//asbeforeFileSystem

c++ - 引用的条件分配

有比我对C++标准理解更深的人可以详细说明一下吗?这是我的示例程序#include#includeintmain(intargc,char*argv[]){conststd::stringmessage("helloworld");std::cout0)?message:"";std::cout在一台机器上它这样做:#g++--version&&g++str_test.cpp&&./a.outg++(Debian4.7.2-5)4.7.2Copyright(C)2012FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourcef

什么是将现有项目推向现有GIT存储库分支的GIT命令是什么?

我是Git的新手,与Git命令感到困惑。我有一个项目,我需要将其推到现有的GIT存储库分支。这不是我要求进行的另一个单独的分支。请帮我。谢谢!看答案创建提交后,将其推到分支:gitpush如果您尚未将远程存储库添加到当前环境中,请通过:gitremoteadd在哪里是您选择的名称(常规的“原点”,将远程存储库作为所有源的来源),然后是您给出的远程存储库的URL。

c++ - 有没有办法有条件地为 C++ 范围循环选择不同的初始化列表?

我想重新排列这段代码:if(x_can_be_true){for(x:{false,true}){do_work(x);}}else{do_work(false);}所以do_work只被调用一次。从概念上讲,我想这样做:for(x:(x_can_be_true?{false,true}:{false})){do_work(x);}有什么建议可以真正编译该代码吗?编辑:do_work是现实世界问题的简化占位符。它有很多行代码,它们依赖于前面几行中的许多参数。该问题的目的是找到一种避免重复这么多行的模式。因为那不是好的编码习惯。;->我可以把它变成一个有很多参数的函数。或使用参数bloc