草庐IT

C++:高层类层次结构

高类层次结构在运行时有哪些缺点?我们将H称为层次结构的高度(即:从基类到叶子要遍历多少个类)。dynamic_cast会花费更多:花费O(H)。是否有其他运算符或语言功能受到影响? 最佳答案 主要问题是可维护性。很深的类层次结构可能没有正确建模。任何超过3-4级别的内容都会让您收到警报。您可能是从具体类派生的,这是您永远不应该做的事情(LiskovSubstitutionprinciple不允许这样做)。如果您的基类充斥着虚函数(我的意思是不纯函数),那么重构将很困难。将您的基类拆分为几个不同的接口(interface)(Inter

c++ - Visual Studio 2017 - 错误 MSB6006 : "CL.exe" exited with code 2

使用VisualStudio2017构建项目时遇到此错误:errorMSB6006:"CL.exe"exitedwithcode2.这是我的代码:intmain(){constintWIDTH=800;constintHEIGHT=600;Bitmapbitmap(WIDTH,HEIGHT);unique_ptrhistogram(newint[Mandelbrot::MAX_ITERATIONS+1]{0});unique_ptrfractal(newint[WIDTH*HEIGHT]{0});//intfractal[WIDTH*HEIGHT]{0};for(inty=0;y问题似

c++ - 实现中的构造函数与 header

据我所知,构造函数应该在实现文件中定义,但我只能在一个主文件中找到带有该类的示例,而不是拆分为.h和.cpp文件我只需要知道我的以下代码是否以可接受的方式分隔..实体.h:usingnamespacestd;classcEntity{private:/*---------------------------------------InitMethods--------------------------------------*/int*X,*Y;int*Height,*Width;public:/*---------------------------------------Cons

c++ - QGridLayout : change height of a row

我是qt的新手,现在我的窗口看起来像这样:*---------**---------**---------**---------*|ListView1||ListView2||ListView3||ListView4|||||||||*---------**---------**---------**---------**---------------------------------------------*|||ListView5|||*---------------------------------------------**-------------------------

c++ - 为什么我没有收到有关在 ctor 中访问未初始化成员变量的编译器警告?

这是一个简单的测试用例,编译时没有任何警告。看起来像是一个常见错误,但在这种情况下,clang、gcc和visualstudio不会发出警告。为什么?classImage{private:intwidth,height;int*array;public:Image(int_width,int_height);voidcrashTest();};Image::Image(int_width,int_height){array=newint[width*height];//^^^^^^^^^^^thisiswrong//Iexpectawarningheree.g.:'widthisuni

c++ - 我应该尝试返回一个数组,还是有更好的解决方案?

一个问题set对于学习C++的人来说是Writeashortprogramtosimulateaballbeingdroppedoffofatower.Tostart,theusershouldbeaskedfortheinitialheightofthetowerinmeters.Assumenormalgravity(9.8m/s2),andthattheballhasnoinitialvelocity.Havetheprogramoutputtheheightoftheballabovethegroundafter0,1,2,3,4,and5seconds.Theballshou

c++ - QML - 启动时的主窗口位置(屏幕中心)

我如何做以下事情:我想在中央屏幕上显示我的主窗口。 最佳答案 如果使用QtQuick,可以这样做:importQtQuick2.2importQtQuick.Controls1.1importQtQuick.Window2.0ApplicationWindow{visible:truewidth:320height:480Component.onCompleted:{//Commentingthistousepropertiesinsteadofsetters//setX(Screen.width/2-width/2);//setY

c++ - 如何使 tesseract-ocr 从屏幕上的坐标读取?

我一直在寻找一个示例,说明如何创建一个类/函数来尝试从指定坐标处的屏幕读取文本。使用bitblt捕获屏幕的指定部分并在其上运行tesseract的简单操作。所有这些都在内存中完成,无需将图像文件创建到磁盘。Tesseract似乎有非常糟糕的API,并且需要所有事物的TIF图像,据我所知,如果不深入研究其代码,它甚至无法接受位图内存图像。任何帮助将不胜感激,一个实际的例子将是理想的。 最佳答案 http://i.imgur.com/HaJ2zOI.png继续阅读/查看以下内容,了解如何对内存中的图像使用Tesseract-OCR。#i

c++ - 在 C++ 类定义中延迟数组大小?

有没有什么方法可以延迟定义数组的大小,直到类方法或构造函数?我的想法可能看起来像这样,但(当然)行不通:classTest{private:int_array[][];public:Test::Test(intwidth,intheight);};Test::Test(intwidth,intheight){_array[width][height];} 最佳答案 Daniel所说的是,当调用Test(width,height)方法时,您需要为数组动态分配内存。你会像这样声明你的二维(假设是整数数组):int**_array;然后在

c++ - 成员名称和构造函数参数名称之间的冲突

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:MembersvsmethodargumentsaccessinC++我有一个包含一些成员的类,例如x、y、width和height。在它的构造函数中,我不会这样做:A::A(intx,inty,intwidth,intheight){x=x;y=y;width=width;height=height;}当使用g++x、y、width和height编译时,这真的没有意义>变成奇怪的值(例如-1405737648)。解决这些命名冲突的最佳方法是什么?