derived-declarator-type
全部标签 我在看最新的C9lecture并注意到一些有趣的事情..在他对type_traits的介绍中,Stephan使用了以下(如他所说,人为的)示例:templatevoidfoo(Tt,true_type){std::coutvoidfoo(Tt,false_type){std::couttemplatevoidbar(Tt){foo(t,typenameis_integral::type());}这似乎比:复杂得多templatevoidfoo(Tt){if(std::is_integral::value)std::cout后一种做法有问题吗?他的方法更好吗?为什么?谢谢。
我有这段代码:intmyFunc(std::string&value){charbuffer[fileSize];....buffer[bytesRead]=NULL;value=buffer;return0;}行-buffer[bytes]=NULL给我一个警告:convertingtonon-pointertype'char'fromNULL。我如何摆脱这个警告? 最佳答案 不要使用NULL?它一般是为指针保留的,你没有指针,只有一个简单的char。只需使用\0(空终止符)或简单的0。
我知道这是一个有效的C++程序。函数声明中的throw有什么意义?据我所知,它什么都不做,也不用于任何事情。#includevoidfunc()throw(std::exception){}intmain(){return0;} 最佳答案 它指定任何std::exception都可以从func()中抛出,除此之外别无他法。如果抛出其他东西,它将调用一个unexpected()函数,该函数默认调用terminate()。这意味着抛出其他东西几乎肯定会以与未捕获异常相同的方式终止程序,但实现必须强制执行此操作。这通常与在func()周围
我构建了一个带有外部导出的c++dll,以便从我的C#程序中调用它。对于大多数函数,调用工作得很好,但是当我需要将一些字符串从C#传递到C++时会出现问题。我将它们作为普通字符串传递,并作为constchar*接收。它们都很好,所有数据都在那里,但随后我继续从这些char数组中定义了几个字符串。代码继续没有任何问题,直到我退出函数。然后它抛出一个异常,说最后定义的std::string周围的堆栈已损坏,我真的不确定为什么会这样。我尝试了很多定义字符串的方法:复制它们、更改P/Invoke定义的编码。一些额外的信息我从定时器线程调用这个函数;我提到这个是因为我发现,线程上的std::st
使用VisualStudio2014CTP、C++(v140)编译器:autogp=[&](BYTE*buff){autogp1=[](char*bff,char**p1){*p1=strstr((char*)bff,"(");return(*p1);};};错误:conditionalexpressionoftype'void'isillegal(也许auto真的输入错误?)如果我将内部lambda声明为std::functiongp1然后就可以了是我做错了什么还是编译器错误? 最佳答案 我没有运行2014,但您可能需要指定内部l
如注释中所述,此代码抛出编译器错误error:field‘fTarget’hasincompletetype。为什么会这样?我只是分配那个字段而不做任何需要知道里面是什么的操作......或者我是?也许它无法弄清楚复制构造函数?classFSRVertex;//fwdclassFSREdge{public:charfC;FSRVertexfTarget;//compilererrorFSREdge(charc,FSRVertextarget):fC(c),fTarget(target){}//compilererror};classFSRVertex{public:boost::uno
最近面试官问了我下面的问题"派生类允许从基类继承,但所有派生类都必须实现用户定义的析构函数。如果派生类没有定义用户定义的析构函数,则报告编译错误。“任何想法,如何解决这个问题?想过在Baseclass中使用purevirtualdestructor来解决这个问题,但是并没有解决问题。对于下面的代码,我希望编译器报告一个错误,因为派生类没有实现用户定义的析构函数classBase{public:virtual~Base()=0;};Base::~Base(){cout 最佳答案 有一些方法可以使用异常规范强制执行显式声明的析构函数cl
下面是一个给出编译时错误的程序。这主要与D类中的Boo函数有关。我最终尝试使用多个线程来调用solve方法,但目前这对我来说似乎不太有效,无法做到这一点。错误是:1>d:\dummy\project1\trash.cpp(37):warningC4101:'d':unreferencedlocalvariable1>c:\programfiles(x86)\microsoftvisualstudio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240):errorC2672:'std::invoke':no
对更好的标题有什么建议吗?在Qt中,信号和槽有一个很好的特性。但是,它会告诉您特定信号是否只能在运行时(afc)期间连接到特定插槽。打算:从模板创建一个包含“信号签名”(作为模板参数的函数指针)的类,以允许将给定签名(传递参数的数量和类型)的“插槽”仅连接到具有相似签名的“已定义”信号;必须简单易用。现在的问题:我在ISignalSlotMap类中遇到“使用声明”的编译错误。templatemultiplevariadicinheritancewithvariadicargumenttypes-在这里它编译得很好。还有,有什么办法可以简化模板算法吗?更新:第一个block可以在没有dl
如果我定义一个具有特定对齐要求的简单类型,该类型的std::vector难道不应该为每个元素遵守对齐吗?考虑下面的例子typedefstd::arrayalignas(32)avx_point;std::vectorx(10);assert(!(std::ptrdiff_t(&(x[0]))&31)&&//assertthatx[0]is32-bytealigned!(std::ptrdiff_t(&(x[1]))&31));//assertthatx[1]is32-bytealigned我发现clang3.2(带或不带-stdlib=libc++)悄悄地(没有任何警告)违反了对齐要求