草庐IT

this-page

全部标签

c++ - C/C++ : How does this inline if get parsed?

考虑这段代码:intmain(){cout它的输出将是1,而不是Yes或No。为什么将true发送到输出流而不是Yes或No字符串?内联if的其余部分如何解析? 最佳答案 这与操作顺序有关。这与:(coutcout返回ostream&,它必须转换为bool或等价物。?:的结果被扔掉了。如果这看起来很奇怪(为什么这个优先级?),请记住ostream的operator是C++代码中引入的重载,它不允许更改优先级。的优先级专为对移位有意义的内容而设计。它作为流媒体运营商的使用要晚得多。编辑:可能转换为(void*)使用这个:http://

c++ - 构造函数和对象创建中的“this”

我读了一些文章,说你不应该在构造函数中使用“this”关键字,而其他人则说完全相反....现在我的主要问题是:在构造函数中使用“this”是否安全,是否是一种好的做法?这个问题导致其他人:对象创建是如何进行的?什么时候创建类的成员?在调用构造函数之前?以下是一些在Windows7上使用VS2012的示例:classFirstClass{intm_A;public:FirstClass(inta):m_A(a){std::coutm_A和:classThirdClass;//forwarddeclclassSecondClass{public:SecondClass(ThirdClass

c++ - 错误 "An array may not have elements of this type"

由于这个奇怪的编译错误,我在编译我的程序时遇到了问题...这是代码的具体部分://theerroroccuresat"char_adr[][]"intheconstructorparametersAddresses(string_ime,string_egn,char*_adres,char_adr[][],intadrLen):Person(_ime,_egn,_adres){addressLength=0;for(;addressLength=5){break;}adr[addressLength]=_adr[addressLength];}} 最佳答案

c++ - '简历' : a namespace with this name does not exist while building (VS 2015, OpenCV 3.2)

在VS2015中构建一个简单的OpenCV应用程序时出现错误'cv':anamespacewiththisnamedoesnotexistwhilebuilding虽然我相信我已经完成了为VS配置OpenCV所需的所有步骤(使用本文作为引用http://opencv-srf.blogspot.com/2013/05/installing-configuring-opencv-with-vs.html)类(class)的开始很简单#include"opencv2/imgcodecs.hpp"#include"opencv2/highgui.hpp"#include"opencv2/sti

c++ - 使用赋值运算符返回 *this

我仔细研究了自己的复制构造函数,它总体上对我来说很有意义。但是,关于做自己的赋值运算符这个话题,我需要有人帮我填空。我几乎不明白你为什么要在所有示例中返回*this,例如下面的示例:Foo&Foo::operator=(constFoo&f){//somelogicreturn*this;}所以如果我有这样的语句:Foof;f.hour=7;Foog;g=f;一旦赋值运算符运行,它就会返回对g对象(*this)的引用。所以现在的问题是,我现在不会有这样一个隐含的声明吗?:g=g(gbeingareference)事情是,以前,设置对一个对象的引用会导致调用复制构造函数。在这种情况下,它

c++ - 赋值运算符在 C++ 中返回对 *this 的引用

我从“Effectivec++”中了解到这一点,这是第10列。它说这是让赋值运算符返回对*this的引用的好方法。我写了一个代码片段来测试这个想法。我在这里覆盖了赋值运算符。并对其进行了测试。一切都好。但是当我删除那个操作符覆盖时,一切都是一样的。这意味着,链接分配仍然有效。那么,我错过了什么?这是为什么?需要你们的解释,谢谢。#includeusingnamespacestd;classWidget{public:Widget&operator=(intrhs){return*this;}intvalue;};intmain(){Widgetmywidget;mywidget.val

c++ - 当基类和派生类都继承自 boost::enable_shared_from_this 时出现错误的弱指针

我有一个派生自boost::enable_shared_from_this的基类,然后是另一个派生自基类和boost::enable_shared_from_this的类:#include#includeusingnamespaceboost;classA:publicenable_shared_from_this{};classB:publicA,publicenable_shared_from_this{public:usingenable_shared_from_this::shared_from_this;};intmain(){shared_ptrb=shared_ptr(n

C++ 模板复制构造函数,编译器说 "passing const as this argument discards qualifiers"

我正在尝试创建动态矩阵的模板类。凭借我目前对C++的了解,我设法解决了一些问题,但我被复制构造函数和重载operator=;困住了。换句话说,我无法创建对象的拷贝。在我看来这应该可行,但我的编译器friend告诉我有1个错误:错误:将“constMatrix”作为“intMatrix::getElement(int,int)[withT=int]”的“this”参数传递会丢弃此行的限定符[-fpermissive]:m[i][j]=original.getElement(i,j);当我想创建一个对象时:Matrixm=Matrix(3,3);我的模板类在这里:templateclass

c++ - (C++) 错误 : 'invalid_argument' was not declared in this scope

我正在使用EclipseC/C++和MinGW编译器。我已将标志-std=c++11添加到项目属性中C/C++Build下的MiscellaneousGCCCCompilerSettings中。我知道这可能是一件简单的事情,但我无法解决此错误。Date.h#includeusingnamespacestd;classDate{public:Date(intm=1,intd=1,inty=1900);voidsetDate(int,int,int);private:intmonth;intday;intyear;staticconstintdays[];};日期.cpp#include#

c++ - 从派生类调用时推断 'this' 指针类型?

我在基类中有一个方法需要传递给它的类型以进行一些与类型相关的操作(查找、大小和一些方法调用)。目前它看起来像这样:classbase{templatevoidBindType(T*t);//dosomethingwiththetype};classderived:publicbase{voidfoo(){do_some_workBindType(this);}};classderivedOther:publicbase{voidbar(){do_different_work...BindType(this);}};但是,我想知道是否有一种方法可以获取调用者的类型而不必传递它,以便我的调