草庐IT

inherited

全部标签

inheritance - 是否可以向 Kotlin 中的现有类添加接口(interface)?

有时创建一个已经由现有第三方代码(即来自库)实现的接口(interface)很有用。例如,我们可以想象选择String类的方法子集并声明一个GenericString。然后,我们可能会定义实现这些方法的其他GenericString,但不会定义String类的其他方法。唯一的问题是String类不继承自GenericString类。是否可以向Kotlin中的现有类添加接口(interface),或者我必须创建一个实现该接口(interface)的String子类? 最佳答案 不,很遗憾,不支持“扩展类型”。Kotlin论坛(here

c++ - 使用 mpl::inherit_linearly 定义接口(interface)的含义

我正在编写一些消息处理代码,其中每条消息都是一个POD结构。在写作方式上,这将是定义一个抽象基类,为每种消息类型使用虚拟函数,例如:classAbstractHandler{public:virtualvoidhandleMessage(constMessageType1&msg)=0;virtualvoidhandleMessage(constMessageType2&msg)=0;virtualvoidhandleMessage(constMessageType3&msg)=0;virtualvoidhandleMessage(constMessageType4&msg)=0;};

c++ - 避免模​​拟 std::fstream 类的 "inheritance by dominance"警告

我正在使用googlemock在我的单元测试中模拟一个std::fstream对象,像这样:TEST_F(SomeTest,SomethingIsDoneCorrectly){classMockFstream:publicstd::fstream{};MockFstreamlMockFstream;//Expectationsandassertionshere}当我编译时,我收到以下警告:Warning1warningC4250:'SomeTest_SomethingIsDoneCorrectly_Test::TestBody::MockFstream':inherits'std::b

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

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

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++ - 扩展公共(public)基础 : Diamond inheritance vs. QObject

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

c++ - 如何在 Visual Studio 2012 Express 中更改属性页中的 "Inherited Values"

我下载了一个库的源代码,我想将其包含在我正在从事的项目中。在属性页>配置属性>C/C++>预处理器中。从预处理器定义下拉菜单中单击编辑。对话框的下半部分显示“继承值”,这些是只读的。我想知道这些值的设置位置,以便我可以对其进行编辑。 最佳答案 这些设置可以来自几个地方。其中一些来自您项目中其他地方的设置。例如,如果您将Project->Properties->General->CharacterSet设置为“UseMulti-byteCharacterSet”,您将看到_MBCS出现在继承值列表中。这些设置也可以来自属性层次结构中包

c++ - Visual Studio 编译器警告 C4250 ('class1' : inherits 'class2::member' via dominance)

以下代码生成警告C4250。我的问题是,最好的解决方案是什么?classA{virtualvoidfunc1();}classB:publicA{}classC:publicA{virtualvoidfunc1();}classD:publicB,publicC{}intmain(){Dd;d.func1();//Causeswarning}根据我的阅读,应该可以这样做:classD:publicB,publicC{usingB::func1();}但是,这实际上并没有做任何事情。我目前解决的方法是:classD:publicB,publicC{virtualvoidfunc1(){B

c# - 如何查看文件或文件夹是否未选中 "include inheritable permissions"?

我正在用C#编写一个小实用程序,以确保指定的文件夹及其所有内容都具有适当的访问权限(我想授予AuthenticatedUsers组完全访问权限)。以下代码似乎可以正常更新顶级文件夹的ACL(访问控制列表):SecurityIdentifierallUsers=newSecurityIdentifier(WellKnownSidType.AuthenticatedUserSid,null);InheritanceFlagsiFlags=InheritanceFlags.ContainerInherit|InheritanceFlags.ObjectInherit;FileSystemAc

inheritance - 错误或功能 : Kotlin allows to change 'val' to 'var' in inheritance

我刚刚开始探索Kotlin语言。我正在为继承、var&val和副作用而苦苦挣扎。如果我用valx声明一个特征A并在AImpl中覆盖x,则可以将其覆盖为var(参见下面的代码)。令人惊讶的是,A中的print()方法会受到x重新分配的影响,即使x是A。这是错误还是功能?代码:traitA{funprint(){println("A.x=$x")}valx:Int;}classAImpl(x:Int):A{overridevarx=x;//seemslikexcanbeoverridenas`var`}funmain(args:Array){vala=AImpl(2)a.print()//