草庐IT

static成员

全部标签

c++ - 是否有整洁的等价物来查看成员函数/变量?

Streamslibrary有一个简洁的map函数可以通过成员函数查看范围。Range-V3中是否有任何等效View?view::transform会是唯一的选择吗? 最佳答案 文章中的例子:std::vectorwidgets=/*...*/std::setids=stream::MakeStream::from(widgets).map(&Widget::getId).to_set();(忽略std::vector和std::set缺少的模板参数)在ranges-v3中将是:std::vectorwidgets=//...std

c++ - 成员函数中的 decltype(auto) 忽略无效主体,decltype(expr) 失败

我有一个简单的模板化包装器结构,其成员函数在其模板类型的对象上调用.error()。templatestructWrapper{Tt;decltype(auto)f(){returnt.error();//calls.error()}};如果我用一个没有error()成员函数的类型实例化它,只要我不调用它就没问题。这就是我想要的行为。Wrapperw;//noproblemhere//w.error();//uncommentedcausescompilationfailure如果我使用我认为是具有尾随返回类型的语义等价物,它会在变量声明上出错templatestructWrapper

c++ - static_casting a constexpr void* 的结果是常量表达式吗?

clang正在拒绝gcc允许的这段代码:intmain(){staticconstexprconstvoid*vp=nullptr;staticconstexprconstchar*cp=static_cast(vp);}具有以下内容:error:constexprvariable'cp'mustbeinitializedbyaconstantexpressionstaticconstexprconstchar*cp=static_cast(vp);阅读完N3797中的最终list后5.9/2我没有看到任何禁止在常量表达式中使用static_cast的内容。我是在看错地方还是误读了什么

c++ - 显式构造函数和 static_cast

structFoo{explicitFoo(inta):m(a){}intpadd1,m,padd2;};voidBar(Foo){}intmain(){Bar(11);//OK,giveserrorautox=static_cast(37);x.m;}static_cast构造Foo对象是否可以,即使它的构造函数被标记为explicit?它适用于MSVC2013和GCChttp://ideone.com/dMS5kB 最佳答案 是的,static_cast将使用explicit构造函数。5.2.9Staticcast[expr.s

c++ - 'default_random_engine' 不是 std 的成员

我发现了很多关于这个主题的问题,但所有问题似乎都与不使用C++11编译有关。我的代码是#includeintmain(intargc,char*argv[]){std::default_random_enginegenerator;return0;}即使我用编译gcc-std=c++0xtestmain.cpp给出default_random_engine不是std成员的错误。该程序是在远程机器上编译的,我自己不维护,但gcc-v生成4.4.7版本。有什么想法吗? 最佳答案 对于其他人:检查您是否真的在#include中包含了随机数

c++ - 如何访问 std::vector 类型的成员

我的程序有一个计算总和的函数,为此我需要访问vector中对象的属性:vector声明:classtrilateration{public:...std::vector*potential;...};然后在构造函数中对其进行初始化:trilateration::trilateration(){...potential=newstd::vector();...}类(class)提示如下所示:classtip{public:doublesum;Point2d*pt;tip();tip(doublex,doubley);virtual~tip();};提示构造函数:tip::tip(doub

c++ - 为什么 CreateWindow() 函数需要 WindowClass 的名称成员而不是指向类本身的指针?

我正在阅读Luna的《使用DirectX11进行3D游戏编程的介绍》。我一直为Linux命令行编程,所以我决定从阅读附录A开始,这是一本win32编程入门书,但我不了解创建窗口()函数。它的第一个参数是您要创建的窗口类的名称-所以您首先必须声明一个窗口类,然后“注册”它(我假设这意味着将类添加到神秘的win32API中某处的某个类堆栈),然后将窗口类的lpszClassName成员传递给函数,如下所示:WNDCLASSwc;//setallthevariousmembersofwcwc.lpszClassName=L"BasicWndClass";RegisterClass(&wc);

c++ - 如何根据构造函数参数填充 const 成员数组?

假设我有这个类(class):templateclassA{public:A(constchar*s)...private:constcharbuf[N];};模板在那里,这样我就可以在没有动态内存分配(要求)的情况下配置数组大小。buf成员是const,因为它旨在在对象初始化后在对象的整个生命周期内保持不变。澄清一下,我也无权访问STL。我有什么选择来定义这个构造函数,以便我可以将s的内容复制到buf中?一个选项是const_cast,但我正在寻找不需要这个的替代方案。 最佳答案 @RichardHodges提供的解决方案要求使用

c++ - C++中的数组类成员初始化

我有以下代码片段:#includeusingnamespacestd;classA{int*data;intsize;public:A(ints):size(s){data=newint[size];}A(){data=nullptr;}~A(){if(data)delete[]data;}};classB{Aa[2];public:B(){a[0]=A(10);a[1]=A(11);}};intmain(intargc,char*argv[]){Bb;}在上面的C++代码中,我有classA,它有一个array成员int*data,并且(解除)分配内存由(de)构造函数处理。我创建了

c++ - static_cast 与直接调用转换运算符?

考虑下面的类,作为一个简单的例子:#include#includeusingnamespacestd;classpoint{public:int_x{0};int_y{0};point(){}point(intx,inty):_x{x},_y{y}{}operatorstring()const{return'['+to_string(_x)+','+to_string(_y)+']';}friendostream&operator(p);//Option1os应该直接调用转换运算符,还是只调用static_cast并让它完成工作?这两行几乎会做完全相同的事情(即调用转换运算符),据我所