草庐IT

Non-Public

全部标签

c++ - 为什么继承的 protected operator=() 具有公共(public)访问权限

声明为protected的重载运算符=对于继承父类作为public的子类是公开可访问的。#includeclassA{public:A(charc):i(c){}chari;protected:A&operator=(constA&rdm){std::cout编译时没有错误:$g++-Wall-otest_operator~/test_operator.cpp$./test_operatora.i==aaccessingoperator=()a.i==x直接使用A是编译不过的。operator=()以外的任何其他运算符重载都不会编译。使用g++4.4.7和7.3.0以及c++98和c+

c++ - 来自 Voronoi 的 Delaunay boost : missing triangle with non-integral point coordinates

遵循这两个资源:BoostbasictutorialSOQuestion我用boost写了一个Delaunay三角剖分。如果点坐标是完整的(我生成了几个随机测试并且我没有观察到错误),它工作正常。但是,如果这些点不是整数,我会发现许多不正确的三角剖分缺少边缘或错误的边缘。例如这张图片是用四舍五入的值构建的并且是正确的(见下面的代码)但是这个图像是用原始值构建的并且是不正确的(见下面的代码)这段代码重现了这两个例子(没有显示)。#includeusingboost::polygon::voronoi_builder;usingboost::polygon::voronoi_diagram

c++ - "Socket operation on non-socket"错误由于奇怪的语法

我在调用connect时在我的一些网络代码中遇到错误Socketoperationonnon-socket并花了很多时间试图找出导致的原因它。我终于发现是以下代码行导致了问题:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol)看到问题了吗?该行应该如下所示:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol))我不明白的是为什么第一行不正确的行没有产生警告。换句话说,一般形式不应该:if(foo=bar()编译器看起来很奇怪,尤其是使

java - 公共(public)方法中的私有(private)参数

当非私有(private)方法的参数是私有(private)类型(例如,私有(private)嵌套类)时,g++和javac都不会发出警告。此类方法不能由客户端使用,但它们可以作为类的公共(public)API的一部分出现。在C++中,将此类方法放入类Foo的公共(public)部分,例如,可以允许其他类访问这些方法,而无需明确列为类Foo中的友元(只要它们可以访问用作参数)。但总的来说,不显式地将此类方法设为私有(private)是否是不好的风格,还是可以将其忽略?(反正客户端用不了,有什么大不了的) 最佳答案 这是允许的,也可能

c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*)

我收到此错误“输入‘Cell’的非常量左值无法使用此代码绑定(bind)到‘Cell*’类型的临时对象:classRegionHolder{public:RegionHolder(Region&Region1):m_RegionCellNOO(&(Region1.m_NOO))~RegionHolder();protected:Cell&m_RegionCellNOO;//differenceishere};但不是这个:classRegionHolder{public:RegionHolder(Region&Region1):m_RegionCellNOO(&(Region1.m_NO

c++ - 如何优化最长公共(public)子序列的 O(m.n) 解决方案?

给定两个字符串,长度为x1的字符串X和长度为y1的字符串Y,找出两个字符串中从左到右(但不一定在连续block中)出现的最长字符序列。e.gifX=ABCBDABandY=BDCABA,theLCS(X,Y)={"BCBA","BDAB","BCAB"}andLCSlengthis4.我使用了这个问题的标准解决方案:if(X[i]=Y[j]):1+LCS(i+1,j+1)if(X[i]!=Y[j]):LCS(i,j+1)orLCS(i+1,j),whicheverisgreater然后我使用了内存,使它成为一个标准的DP问题。#include#includeusingnamespace

c++ - 如何计算最小公共(public)祖先算法的时间复杂度?

我进入了一篇讲LCA算法的文章,代码很简单http://leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-i.html//Return#nodesthatmatchesPorQinthesubtree.intcountMatchesPQ(Node*root,Node*p,Node*q){if(!root)return0;intmatches=countMatchesPQ(root->left,p,q)+countMatchesPQ(root->right,p,q);if(root==p||root==q)

c++ - 将 QUrl 传递给 QNetworkRequest 构造函数会导致 "non-class type"编译器错误

当我将QUrl传递给QNetworkRequest构造函数时,我从编译器中得到了奇怪的错误。更奇怪的是它只发生在特定的情况下,举个例子:#include#includeintmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);QStringstr;QNetworkRequestreq(QUrl(str));req.setUrl(QUrl(str));//error:requestformember'setUrl'in'req',whichisofnon-classtype'QNetworkRequest()(QUrl)'QNet

c++ - 在公共(public)接口(interface)中使用共享指针

我们有一个使用共享指针的非常标准的树API,大致如下所示(为简洁起见省略了实现):classnode;usingnode_ptr=std::shared_ptr;classnode:publicstd::enable_shared_from_this{std::weak_ptrparent;std::vectorchildren;public:virtual~node()=default;virtualvoiddo_something()=0;voidadd_child(node_ptrnew_child);voidremove_child(node_ptrchild);node_pt

c++ - Q_INVOKABLE 是否需要在 Qt5 中从 QML 调用公共(public) QObject 函数?

我刚刚意识到我几乎可以调用公开给QML的对象的任何函数。现在我对Q_INVOKABLE很好奇。Qt5docs状态:[...]anyQMLcodecanaccessthefollowingmembersofaninstanceofaQObject-derivedclass:PropertiesMethods(providingtheyarepublicslotsorflaggedwithQ_INVOKABLE)SignalsSinceQt5(在C++中)我可以像槽一样调用QObject的任何公共(public)函数,即我不必将它们声明为“公共(public)槽”。这是否意味着我可以从QM