草庐IT

Constants

全部标签

c++ - 返回指向 const 对象的 const 共享指针的 const vector

给定以下基于共享指针容器的类,classFoo;classBar{public://...conststd::vector>&getFoos()const{returnfoos_;}private:std::vector>foos_;};不会编译因为invalidinitializationofreferenceoftype‘conststd::vector,std::allocator>>&’fromexpressionoftype‘conststd::vector,std::allocator>>’foos_成员需要指向可变的Foo对象供Bar对象内部使用,但我不想要客户端代码调用

c++ - constexpr 替换数学常量,如 M_PI

有没有C++11constexpr常量可以用来代替中的常量宏,即像M_PI这样的常量和friend?或者缺少它,任何全局const在运行时提供这些常量的值? 最佳答案 C++标准库中没有定义预定义的constexpr或全局常量。但是您可以自己定义它们,例如:namespaceMathConstants{constdoubleE=2.71828182845904523536;constdoubleLOG2E=1.44269504088896340736;constdoubleLOG10E=0.434294481903251827651

c++ - 引用成员是好的做法吗?是常量成员吗?

我和一位同事正在争论const或引用成员是否永远是正确的做法。const和reference成员使类不可复制且不可移动,除非您编写自己的复制和移动运算符来忽略reference或const成员。我找不到仅仅因为某些成员是引用或const就忽略复制或移动的情况。我认为拥有一个不可移动的对象在逻辑上很少是合理的,并且是一个仅与类是否为locationinvariant有关的选择。.不可复制的对象更为常见,但是选择使类不可复制与它是否拥有逻辑上不可复制的资源,它是否代表唯一所有权等有关。我想不出唯一特征的原因是否具有引用或const成员意味着该类应该具有这些特征中的任何一个(不可复制或不可移

c++ - Switch 语句 C++ 中的字符

求助!我无法生成我的程序的输出。这是条件:构造一个程序,如果购买的衬衫是XL并且价格大于500,则提供100比索的折扣;购买L号衬衫,价格大于600可享50比索优惠。#includeusingnamespacestd;intmain(){intp;ints;cout>p;cout>s;switch(s){case'XL':case'xl':{if(p>500){cout600){cout程序的输出:Inputprice:500Inputsize:XLProcessreturned0(0x0)executiontime:5.750sPressanykeytocontinue.附言如何删除

c++ - '非静态引用成员,不能使用默认赋值运算符'

当我尝试编译我的代码时出现此错误:非静态引用成员‘Timestep&Timestep::previousTimestep’,不能使用默认赋值运算符我创建了一个Problem,它创建了一个Timestep对此Timestep的引用应该存储在vectorsolution。此外,我想存储对前一个Timestep的引用-对于第一个Timestep来说,这将是对自身的引用......我读到,如果我在一个类中有const成员,我需要定义一个自己的运算符,我试图将其设置为相等。但是,从代码中删除了所有const元素,它仍然不起作用。有什么建议么?非常感谢。classProblem{public:vo

c++ - 将大量数据初始化到 C++ 容器中的最佳方法?

例如:InitEmployee(){vectoremployeeList={Employee("ClarkKent",0),Employee("BruceWayne",1),...Employee("HalJordan",65535)}}我无法从文件或数据库中查询,因为该程序需要在单个可执行文件中,因此所有常量数据都必须进行硬编码。我实际上使用boost的multi_index_container通过名称和id进行快速查找,但为了简单起见,我在这里使用vector作为示例。问题是我不能在没有堆栈溢出的情况下在单个函数中拥有那么多(2^16)常量数据。有没有更好的方法在不拆分函数的情况下

c++ - 任意类的 const 和非 const 成员函数的模板包装器

我想要一个模板化类(包装器),它可以接受所有可能的类(T)并使用这些类(函数)的成员函数做一些事情(这里是求值)。我找到了类似的请求,你可以看到here和here,但均不能满足以下两个条件。条件:指向类实例的指针(T*ptr)和指向成员函数(function)的指针都必须在包装类中可访问。包装类应与const和非常量成员函数一起使用。这里的代码只适用于非常量:#include#includetemplatestructWrapper{Wrapper(T*ptrT);doubleevaluate(double);protected:T*myPtrT;};templateWrapper::

c++ - 候选函数不可行 : 1st argument ('const Node *' ) would lose const qualifier

我正在使用内置的C++编写有向图(有向图)类unordered_map>数据结构,其中Node和Edge是我自己定义的两个结构体。在类里面我写了一个containsNode()搜索Node的方法在图中。这是containsNode()方法体:boolDiGraph::containsNode(constNode*n)const{auto::const_iteratorit=digraph.find(n);return(it==digraph.end());}digraph是unordered_map>类型的DiGraph的私有(private)成员.但是,编译器会生成以下错误:erro

c++ - 定义常量数组以用作模板参数

我正在寻找常量(n)的定义,允许它们用作模板构造函数中的参数,例如。像这样:constintn[5]={4,8,16,32,64};for(inti=0;iC;(...otherthingsdependingonn[i])}SomeClass看起来像templateclassSomeClass{...}有什么办法(使用宏或其他方法)吗? 最佳答案 是的,您可以通过使用递归模板执行循环并将n指定为constexpr来完成此操作.这仅适用于C++11或更高版本。工作示例(ideonelink):#includetemplateclass

c++ - C++中的临时变量和常量有什么区别?

请允许我先发布我的代码:voidFun(short&s){}voidFunCon(constshort&s){}intmain(){intiTest=20;//note:iTestisintbutparameterofFunis"short&"Fun(iTest);//error,Iknowthereisatempvariable(typecast)FunCon(iTest);//okreturn0;}我知道Fun(iTest);会生成一个新的临时变量(类型转换),但我想知道临时变量是否是一个常量?如果否:为什么我不能将临时变量传递给short&如果是:我有另一个这样的代码:class