问题标签 [abstract]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
class - 我应该命名我所有的抽象类 AbstractFoo
确保所有抽象类的名称都以“抽象”为前缀是一种好习惯吗?
c++ - 如何在 C++ 构造函数中获得多态行为?
我有一个我想看起来像这样的基类:
重点是强制派生类覆盖I
并强制在构造每个对象时调用它。这习惯于做一些簿记,我需要知道正在构造什么类型的对象(但我将当前对象视为基类)。
这不起作用,因为 C++ 不允许您从构造函数调用抽象虚函数。
有没有办法达到同样的效果?
基于这个链接,答案似乎是没有办法得到我想要的。然而它说的是:
最简洁的答案是不。基类对派生自哪个类一无所知——这也是一件好事。
[...]
也就是说,在构造函数 Derived1::Derived1 开始之前,该对象不会正式成为 Derived1 的实例。
但是在我的情况下,我不想知道它是什么,而是它会变成什么。事实上,只要用户可以(事后)将它映射到一个类,我什至不在乎我得到了什么。所以我什至可以使用返回指针之类的东西并摆脱它。
(现在回到阅读该链接)
c# - 泛型问题
我有一个通用类
signalType 是一个抽象类。如何声明一个动态字段来存储它?以下代码将引发编译错误,说明 Decoder 必须是非抽象类型泛型。
c# - 将抽象只读属性覆盖为读/写属性
我只想强制在基础抽象类的给定属性上实现 C# getter。如果需要,派生类还可以为该属性提供一个设置器,以供公众使用静态绑定类型。
给定以下抽象类:
如果我想要一个也实现 setter 的派生类,我可以天真地尝试:
但是后来我得到一个语法错误,因为我尝试覆盖不存在的设置器。我尝试了其他一些方法,例如将 base setter 声明为私有等,但我仍然偶然发现各种错误阻止我这样做。必须有一种方法可以做到这一点,因为它不会破坏任何基类合同。
顺便说一句,它可以用接口来完成,但我真的需要那个默认实现。
我经常偶然发现这种情况,我想知道是否有隐藏的 C# 语法技巧可以做到这一点,否则我将忍受它并实现手动 SetProperty() 方法。
c++ - 指向抽象模板基类的指针?
我无法弄清楚这一点。我需要一个抽象模板基类,如下所示:
现在,我从中得出,它指定了 Dendrite 的确切用法。
现在的问题。
如何创建一个指向没有特定类型的基类的指针向量,我想通过稍后将元素推送给它来指定它?就像是:
这是可能的还是我在这里遗漏了一些非常基本的东西?
java - 带有抽象方法的 groovy 模拟
我有一个名为 Parameter 的 Java 对象,我正在尝试使用 groovy 来模拟它。参数是具有1个抽象方法的抽象类。它还有一个名为 getName() 的非抽象方法。我试图在 Groovy 中模拟如下:
但是我得到一个运行时错误,因为我没有实现抽象方法。如果我试图创建一个模拟,为什么我需要实现抽象方法?
谢谢,杰夫
c++ - 最佳操作系统抽象?
我正在寻找一些东西来抽象 C/C++ 中的标准操作系统功能:跨越/杀死线程、发送/接收消息、启动/停止计时器,甚至可能是内存管理,尽管我自己可以用我的自己的缓冲池。
我希望能够在 Linux/windows 上开发和单元测试,然后为各种目标 O/Ses 重新编译 c/c++ 代码(对于嵌入式系统:eCos、FreeRTOS、VxWorks 等)
尽可能“轻”的东西是最好的,希望只是一个库,甚至是宏的集合。
c++ - C ++ - 派生类中的“未声明成员函数”
我在 MSVC++ 2008 中遇到问题,VS2008 抛出此编译错误:
现在,让我感到困惑的是 render() 是定义的,但是在一个继承的类中。
类定义的工作方式如下:
因此,SpriteBase.h 的精简版本如下:
PlayerSpriteBase.h 是这样的:
最后,PlayerSpriteKasua.h 是这样的:
我知道其中还没有成员,但这仅仅是因为我还没有添加它们。PlayerSpriteBase 也是如此;还有其他的东西要进去。
PlayerSpriteKasua.cpp 中的代码是这样的:
当我输入时void PlayerSpriteKasua::
,Intellisense 会弹出列出 PlayerSpriteBase 和 SpriteBase 的所有成员,但在编译时它会像我上面所说的那样失败。
我收到这个错误有什么特别的原因吗?
PlayerSpriteBase.cpp 是空的,目前还没有任何内容。
SpriteBase.cpp 有很多 SpriteBase 的函数定义,和 PlayerSpriteKasua.cpp 使用相同的格式:
是一个例子。
c - 是否可以在没有分号的情况下执行“C”语句
发布一个示例以执行不带分号(;)的“C”语句
wcf - 带有抽象 DataMember 数组的 WCF DataContract
我无法使这种情况发挥作用。这是模式-
我尝试使用 KnownType 或 KnownServiceType 注释几乎所有内容,但无济于事。
如果我将 BaseT 设为抽象,则会收到反序列化错误“无法实例化抽象类”。如果我使 BaseT 具体化,我不会收到反序列化错误。相反,当我将它转换为 ChildT 时,我得到“无法将 'BaseT[]' 类型的对象转换为 'ChildT[]' 类型”。