草庐IT

Name_of_your_preference

全部标签

C++ googlemocks : Getting a stack trace of an uninitialized call

模拟类看起来像这样:构造模拟类{MOCK_METHOD0(foo,void());};如果我忘记在模拟对象上设置预期的调用,我会得到这样的结果:GMOCKWARNING:Uninterestingmockfunctioncall-returningdirectly.Functioncall:foo()Stacktrace:并且堆栈跟踪为空。那么,为了获取堆栈跟踪必须做什么? 最佳答案 这描述了here:YoucancontrolhowmuchGoogleMocktellsyouusingthe--gmock_verbose=LEVE

c++ - 多次调用 typeid(T).name() 会返回同一个指针吗?

在C++中,我可以使用typeid运算符来检索任何多态类的名称:constchar*name=typeid(CMyClass).name();返回的constchar*指向的字符串willbeavailabletomyprogramforaslongasthecorrespondingclassexists.typeid(T).name()的多次调用是否会为相同的classT返回相同的指针值,或者它们是否允许返回不同的指针? 最佳答案 不,它们不需要返回相同的指针。我在野外系统也看到过没有。每个DLL都有自己的包含nmae的类型对象

c++ - 警告 C4251 : needs to have dll-interface to be used by clients of class

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:std::vectorneedstohavedll-interfacetobeusedbyclientsofclass'Xwarning这是我在该组中的第一篇文章。我正在创建一个DLL并在应用程序的主文件中调用它。代码编译正常,但出现以下错误:warningC4251:'PNCBaseClass::m_vAvailChannelsFromRx':class'std::vector'needstohavedll-interfacetobeusedbyclientsofclass'PNCBaseClass'3>w

C++14 元编程 : Automagically build a list of types at compile/init time

使用C++14和CuriouslyRecurringTemplatePattern(CRTP)以及可能的Boost.Hana的某种组合(或boost::mpl如果您愿意),我可以在编译时(或静态初始化时)构建一个类型列表而无需显式声明吗?例如,我有这样的东西(在Coliru上查看):#include#include#includenamespace{structD1{staticconstexprautoval=10;};structD2{staticconstexprautoval=20;};structD3{staticconstexprautoval=30;};}intmain(

c++ - 错误 : passing const xxx as this argument of xxx discards qualifiers

我在将仿函数从Windows移植到Linux时遇到问题。(传递给STL::map以进行严格弱排序的仿函数)原文如下:structstringCompare{//Utilizedasafunctorforstl::mapparameterforstringsbooloperator()(stringlhs,stringrhs){//Returnstrueiflhs由于linux不支持_stricmp而是使用strcasecmp,我将其更改为:structstringCompare{booloperator()(stringlhs,stringrhs){//Returnstrueiflhs

解决在idea上连接linux开启的redis服务失败Failed to connect to any host resolved for DNS name.(史上最强+最细解决方案)

今天在idea上连接reids服务器时出现错误FailedtoconnecttoanyhostresolvedforDNSname.那么我们来一步一步来进行如下步骤。首先找到自己的redis.conf文件,可以使用这个搜索按钮直接搜索redis.conf文件(因为不同人的redis.conf文件可能不一样)找到该文件后我们需要修改如下几个地方。(1)、daemonizeyes大概在136行(2)、protected-modeno大概在88行(3)、注释掉bind127.0.0.1大概在69行这里需要注意的是注释的不是上面的而是箭头所指的地方。修改完成后我们wq保存退出。下面是打开端口6379(

C++ 错误 : Type Name is Not Allowed

我正在尝试学习指针参数中的新类(class),我想让函数senior和everyoneElse接受指针x,但是当我尝试使用指针pAge调用函数时,它显示错误:类型名称是不允许的。怎么了?#includeintsenior(int*x);inteveryoneElse(int*x);usingnamespacestd;intmain(){intage(0);int*pAge(&age);cout>age;if(age>59)senior(int*pAge);elseeveryoneElse(int*pAge);return0;}intsenior(int*x){return*x;}int

C++ 连接字符串导致 "invalid operands of types ‘const char*’ 和 ‘const char"

我想连接两个字符串,但出现错误,我不知道如何克服这个错误。有什么方法可以将这个constchar*转换为char吗?我应该使用一些取消引用吗?../src/main.cpp:38:error:invalidoperandsoftypes‘constchar*’and‘constchar[2]’tobinary‘operator+’make:***[src/main.o]Error1但是,如果我尝试以这种方式组成“bottom”字符串,它会起作用:bottom+="|";bottom+=tmp[j];bottom+="";这是代码。#include#include#include#inc

c++ - 可变参数模板 : Perfect forwarding of integer parameter to lambda

有类似的问题,但我没有找到适合我的问题的答案。考虑以下代码:#include#include#include#include#includeclassTestClass{public:TestClass(intvalue):mValue(value){}private:intmValue;};templateclassDeferredCreator{public:templateDeferredCreator(Args&&...args):mpCreator([=]()->T*{returnnewT(std::forward(args)...);}),mpObject(){}T*get

c++ - 在 C++ 中传递变量 "name"

我目前仅使用以下模板来检查NULL指针,如果为NULL,则将错误消息打印到日志文件,然后返回false。templatestaticboolisnull(T*t,std::stringname=""){_ASSERTE(t!=0);if(!t){if(!(name.length()))name="pointer";PANTHEIOS_TRACE_ERROR(name+"isNULL");returnfalse;}returntrue;}我目前这样调用它:if(!(isnull(dim,BOOST_STRINGIZE(dim))))returnfalse;如果您注意到我需要将要打印到日志