草庐IT

inherited-constructors

全部标签

constructor - 如何在 Kotlin 的构造函数 block 之外访问辅助构造函数参数

我是Kotlin的新手,正在学习可用的教程。但是现在我似乎对辅助构造函数有疑问:在主构造函数中声明的参数可以在函数中访问,但是当我尝试使用辅助构造函数中的参数执行此操作时,出现错误:未解析的引用:nbr代码:classTest(_name:String){valname:String=_nameconstructor(_name:String,_nbr:Int):this(_name){valnbr:Int=_nbr}funprintNameAndNumber(){println("Name:$name")println("Number:$nbr")}}我很清楚我做错了什么,但谁能告诉

c++ - 如何 "inherit"来自 STL 类的迭代器?

我正在尝试使用我编写的一些算法创建一个名为tableaux的对象类,它们本质上是无符号整数vector的vector(它们类似于矩阵,只是行的长度可以不同)。主要问题是我想从vector类继承这些对象的迭代器,但我不知道如何做。我看了几个相关的问题和答案,我很容易继承std::vector>公开的,但共识是,由于STL容器没有虚拟析构函数或其他原因,这是不好的。所以我决定尝试通过组合来“继承”。这是我要实现的目标的一个最小示例:#include#includeclasstableau{private:std::vector>rep;public:usingstd::vector>::i

C++为什么vector初始化会调用copy constructor

当你用下面的方式初始化一个vector时:std::vectorMyVec(10);它调用默认构造函数一次,然后再调用复制构造函数10次。所以,如果我没理解错的话,vector中的对象都是拷贝构造函数生成的。有人可以解释调用复制构造函数而不是默认构造函数的原因吗?或者甚至只是在没有对象的情况下分配内存? 最佳答案 它将分配没有对象的内存,除非您指定初始大小为10,因此它必须创建10个对象。如果你想要存储10个对象而不实际创建它们,你可以这样做:std::vectorMyVec;MyVec.reserve(10);如果你看一下你正在使

c++ 将 vector<Inherited*> 转换为 vector<abstract*>

classInterface{};classFoo:publicInterface{};classBar{public:vectorgetStuff();private:vectorstuff;};如何实现getStuff()函数? 最佳答案 vectorresult(stuff.begin(),stuff.end());returnresult; 关于c++将vector转换为vector,我们在StackOverflow上找到一个类似的问题: https:

c++ - C++ 是否为纯虚拟类创建默认值 "Constructor/Destructor/Copy Constructor/Copy assignment operator"?

C++编译器是否为这个“类”生成默认函数,如Constructor/Destructor/Copy-Constructor...?classIMyInterface{virtualvoidMyInterfaceFunction()=0;}我的意思是不可能实例化这个“类”,所以我认为没有生成默认函数。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义析构函数virtual它将默认创建,而不是virtual。此外,我想知道为纯虚拟接口(interface)定义虚拟析构函数是否合理,如上所示?(所以这里没有使用指针或数据,所以不需要破坏任何东西)谢谢。 最

c++ - 扩展公共(public)基础 : Diamond inheritance vs. QObject

我想我在这里遇到了一种菱形继承(钻石问题)问题。Qt提供了几个旋转框,用于整数值、double值以及日期/时间。它们都派生自QAbstractSpinBox:#includeclassQSpinBox:publicQAbstractSpinBox{};#includeclassQDoubleSpinBox:publicQAbstractSpinBox{};现在我想添加一些所有旋转框通用的功能,在这个具体示例中,一个按钮将旋转框恢复到其最小值(因此是specialValueText)。所以我也派生自QAbstractSpinBox并想出了这样的东西:classAbstractRevert

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor

c++ 类继承,未定义对 'Class::Constructor()' 的引用

编辑:在底部发布固定代码。感谢大家的帮助!我刚刚学习C++,但在继承方面遇到了麻烦。我已经搜索和搜索并尝试了所有可能的方法,但我无法在保留我希望它具有的功能的同时编译此代码。我觉得我犯了一个愚蠢的错误,或者我可能只是错过了一些重要的概念,但如果有人能看一下它,我将非常感激!如果我注释掉StarSystemConstructor中创建对象的3行,那么它会编译,所以我知道这与问题有关。#include#include#include#include#includeusingnamespacestd;classSystemBody{public:SystemBody();intsystemb

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案