草庐IT

c++ - 警告 : ISO C++ forbids converting a string constant to ‘char*’ for a static `constexpr char*` data member

这个问题在这里已经有了答案:constexprconstvsconstexprvariables?(3个回答)关闭3年前。为什么这段代码会返回警告warning:ISOC++forbidsconvertingastringconstantto‘char*’[-Wwrite-strings]如果Aconstexprspecifierusedinanobjectdeclarationornon-staticmemberfunction(untilC++14)impliesconst.Aconstexprspecifierusedinafunctionorstaticmembervariab

c++ - 错误 : member access into incomplete type : forward declaration of

我在同一个.cpp文件中有两个类://forwardclassB;classA {voiddoSomething(B*b){b->add();}};classB{voidadd(){...}};转发不起作用,我无法编译。我得到这个错误:error:memberaccessintoincompletetype'B'note:forwarddeclarationof'B'我正在使用clang编译器(clang-500.2.79)。我不想使用多个文件(.cpp和.hh),我想只在一个.cpp上编写代码。我不能在A类之前写B类。您知道如何解决我的问题吗? 最佳答案

c++ - 错误 : ‘unique_ptr’ is not a member of ‘std’

我想这是不言自明的-我似乎无法使用C++11功能,即使我认为我已经正确设置了所有内容-这可能意味着我没有。这是我的代码:#include#includeclassObject{private:intvalue;public:Object(intval){value=val;}intget_val(){returnvalue;}voidset_val(intval){value=val;}};intmain(){Object*obj=newObject(3);std::unique_ptrsmart_obj(newObject(5));std::coutget_val()这是我的g++版

c++ - "to_string"是 't a member of "标准”?

好的,我有tmp.cpp:#includeintmain(){std::to_string(0);return0;}但是当我尝试编译时,我得到:$g++tmp.cpp-otmptmp.cpp:Infunction‘intmain()’:tmp.cpp:5:5:error:‘to_string’isnotamemberof‘std’std::to_string(0);^我正在运行g++版本4.8.1。与我在那里发现的所有其他对这个错误的引用不同,我没有使用MinGW,我使用的是Linux(3.11.2)。任何想法为什么会发生这种情况?这是标准行为,我做错了什么还是某处有错误?

c++ - 运算符重载 : member function vs. 非成员函数?

我读到声明为成员函数的重载运算符是不对称,因为它只能有一个参数,而自动传递的另一个参数是this指针。所以没有标准来比较它们。另一方面,声明为friend的重载运算符是symmetric,因为我们传递了两个相同类型的参数,因此可以比较它们。我的问题是,当我仍然可以将指针的左值与引用进行比较时,为什么首选friend?(使用非对称版本的结果与对称版本相同)为什么STL算法只使用对称版本? 最佳答案 如果您将运算符重载函数定义为成员函数,则编译器会将s1+s2等表达式转换为s1.operator+(s2)。这意味着,运算符重载的成员函数

c++ - 如果我删除一个类,它的成员变量会自动删除吗?

我一直在研究,没有找到相关的东西,所以我来了。我试图避免内存泄漏,所以我想知道:假设我有一个类MyClass与成员intsa和b,以及一个int数组c,里面填充了一个成员函数:classMyClass{public:inta,b;intc[2];voidsetVariables(){a,b=0;for(inti=0;isetVariables();deletemc;}现在,我调用deletemc后,会a,b,以及c的所有内容也被删除?还是我必须在MyClass的析构函数中明确地这样做? 最佳答案 规则很简单:用new创建的每个对象都

c++ - 如果我删除一个类,它的成员变量会自动删除吗?

我一直在研究,没有找到相关的东西,所以我来了。我试图避免内存泄漏,所以我想知道:假设我有一个类MyClass与成员intsa和b,以及一个int数组c,里面填充了一个成员函数:classMyClass{public:inta,b;intc[2];voidsetVariables(){a,b=0;for(inti=0;isetVariables();deletemc;}现在,我调用deletemc后,会a,b,以及c的所有内容也被删除?还是我必须在MyClass的析构函数中明确地这样做? 最佳答案 规则很简单:用new创建的每个对象都

c++ - '' 的构造函数必须显式初始化引用成员 ''

我有这门课classCamFeed{public://constructorCamFeed(ofVideoGrabber&cam);ofVideoGrabber&cam;};还有这个构造函数:CamFeed::CamFeed(ofVideoGrabber&cam){this->cam=cam;}我在构造函数中收到此错误:''的构造函数必须显式初始化引用成员''有什么好办法解决这个问题? 最佳答案 你需要使用构造函数初始化列表:CamFeed::CamFeed(ofVideoGrabber&cam):cam(cam){}这是因为引用必

c++ - '' 的构造函数必须显式初始化引用成员 ''

我有这门课classCamFeed{public://constructorCamFeed(ofVideoGrabber&cam);ofVideoGrabber&cam;};还有这个构造函数:CamFeed::CamFeed(ofVideoGrabber&cam){this->cam=cam;}我在构造函数中收到此错误:''的构造函数必须显式初始化引用成员''有什么好办法解决这个问题? 最佳答案 你需要使用构造函数初始化列表:CamFeed::CamFeed(ofVideoGrabber&cam):cam(cam){}这是因为引用必

ruby-on-rails - Range.include 之间的区别?和 Range.member?在 ruby

Ruby有一个非常有用的Range类来表示字母和数字范围。这个类有两个方法我似乎无法区分:Range.include?和Range.member?Ruby-doc.org对两者给出完全相同的描述。它们之间有什么区别,如果有的话? 最佳答案 他们是彼此的别名。如果您展开文档中的源代码,您会发现它们都引用相同的内部函数。 关于ruby-on-rails-Range.include之间的区别?和Range.member?在ruby,我们在StackOverflow上找到一个类似的问题: