草庐IT

FINAL_DEFINE

全部标签

c++ - "Define"类构造函数中的成员函数

大家好,我想知道您是否能够在类的构造函数中定义或实例化一个函数。假设您有这个简单的类:classcTest{public:cTest(boolbla);~cTest(){}voidsomeFunc(){}};cTest::cTest(boolbla){if(bla){someFunc=functionBody1;//orsomeFunc{functionBody1};//orsomethingdifferent}elsesomeFunc=functionBody2;}如果someFunc是一个经常被调用的函数,您可以避免每次调用该函数时都测试“bla”是否为真。我想了想,想到了两种可能

c++ - "#define bool bool"当我悬停 bool 时说 QtCreator - 我将其跟踪到 boost::asio

我注意到bool在QtCreator中以不同于其他类型的颜色突出显示:只有在包含某些header时才会发生这种情况,最终我将其追踪到.QtCreator的代码检查器似乎无法手动跟踪定义。我使用的boost版本是Boost1.59。这样做有什么目的吗?我真的不介意,但是为同一事物定义任何东西是相当奇怪的,而不是bool. 最佳答案 好吧,我搜索了Boost1.59代码,看看是否可以找到:#defineboolbool或#include但我最终没有找到它们,所以它可能在这些文件中,但很可能在其他地方。Isthereanypurposef

c++ - 带有尾随返回类型的 final、override、const 的语法

我正在尝试覆盖虚拟,但也使用关键字override、final和const,以及尾随返回类型。问题似乎出在派生类中,编译器错误(说我没有指定尾随返回类型)并没有太大帮助。代码在这里:https://wandbox.org/permlink/zh3hD4Ukgrg6txyE也贴在下面。我玩过不同的顺序,但似乎仍然无法正确处理。任何帮助将不胜感激,谢谢。#includeusingstd::cout;usingstd::endl;usingstd::ostream;////////////////////////////////////////////////BasestuffclassBa

c++ - 为什么 GCC 给我一个错误 : no unique final overrider?

在下面的代码中,我收到以下警告和错误:test.cpp:15:warning:directbase'B'inaccessiblein'D'duetoambiguitytest.cpp:15:error:nouniquefinaloverriderfor'virtualvoidA::f()'in'D'但是如果我从A中移除B的虚拟继承(即structB:publicA),我只会得到警告,没有错误。structA{virtualvoidf()=0;};structB:publicvirtualA{voidf(){}};classC:publicB{};structD:publicC,virt

c++ - 在 C++ 中使用#ifndef 和#define 是否过时了?

最近开始学习C++,向一个日常工作用C++的friend请教#ifndef和#define。他说没有人使用,因为如果有人编写了正确的代码,他们就不需要了。然而,在我正在阅读的书籍(对于初学者)中,被告知使用它们是一种很好的做法。 最佳答案 如果您想使用某些特定于操作系统的功能或想为不同的平台编写不同的代码怎么办?如果您希望能够启用/禁用代码的某些功能怎么办?这是预处理器和#ifdef、#define和#endif。假设您希望您的代码使用某些特定于Windows和Linux的功能:#ifdefWINDOWS#include#else#

c++ - 使用#define 进行库配置

我正在开发一个C++数学库,我希望能够在编译时使用定义在其中进行配置。其中一个配置是定义精度。在代码中它看起来像这样:#ifdefMYMATH_USE_DOUBLEtypedefdoubleReal;#elsetypedeffloatReal;#endif这很好。如果有人想在使用MYMATH_USE_DOUBLE配置后使用该库,他们还必须将该定义传递给编译器。有更好的方法吗?我不希望用户必须记住用于编译数学库的定义,然后为他们的应用程序重复这些定义。 最佳答案 我建议使用模板,默认为double。templateFsin(const

c++ - #error inside of#define - 可能在 C++ 中(如果未定义某些常量,则在调用宏 MyMacro 时生成错误)?

我想定义宏,它基于某些条件(#defineINITED的存在,而不是宏的参数)将返回值,或生成编译器错误,例如:#errorNotinitialized!我试过(对于myIdea.h):#ifdefINITED#defineMyMacro(x)x->method();//somethingwithx#else#defineMyMacro(x)#errorNotinitalized!#endif但是该代码会生成错误(不是我想要的那个)预期的宏格式参数。请注意,我不想要该代码(工作,但做了一些不同的事情):#ifdefINITED#defineMyMacro(x)x->method();/

c++ - 如何编写安全且用户友好的 c/c++ #define 宏

我一直在思考如何编写安全、可读和直观的宏。正确使用它们应该通过它们的外观来理解,如果使用不当,编译器应该告诉你,而不是让你引入一个模糊的错误。在编写多行定义宏时,我通常会发现自己是这样构造它们以满足所需条件的:#definemacro(x)do{\...somecodeline;\...somecodeline;\}while(0)这样你就可以...if(a){macro(a);}和...if(a)macro(a);else{...}一个很好的特性是,如果你不正确地使用它们,你会得到一个编译器错误。这不会编译例如:if(a)macro(a)elseb();但是,我看到SW开发人员阅读了

C++ - 最佳实践#define 只写一次的值?

在我们的代码中,我们需要处理配置,为此我们需要将配置名称作为std::string传递给我们自己的框架。示例代码:framework.handle_config("enable-radio-link")framework.handle_config("enable-tv-link")framework.handle_config("enable-gateway-link")soonto...n这些字符串将只写在一个地方,不会在其他任何地方重复。除了只有2或3个配置。我的队友希望将其作为#define并作为最佳实践使用。喜欢#defineENABLE_RADIO_LINK"enable-

c++ - #include <string> 在 header 中定义了一些结构。错误 : string does not define a type

#ifndefSTRCUTS_H#defineSTRCUTS_H#includestructmenuEntry{stringitemID;//'string'doesnotnameatypestringitemName;//'string'doesnotnameatype};#endif当我将#include放在header保护上方时,我得到了同样的错误。想一想,我以前在将结构定义放在标题中时遇到过奇怪的麻烦。一定是我没有得到的东西。 最佳答案 您需要将string更改为std::string,即#ifndefSTRCUTS_H#d