问题标签 [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.

0 投票
9 回答
308 浏览

class - 我应该命名我所有的抽象类 AbstractFoo

确保所有抽象类的名称都以“抽象”为前缀是一种好习惯吗?

0 投票
4 回答
6352 浏览

c++ - 如何在 C++ 构造函数中获得多态行为?

我有一个我想看起来像这样的基类:

重点是强制派生类覆盖I并强制在构造每个对象时调用它。这习惯于做一些簿记,我需要知道正在构造什么类型的对象(但我将当前对象视为基类)。

这不起作用,因为 C++ 不允许您从构造函数调用抽象虚函数。

有没有办法达到同样的效果?


基于这个链接,答案似乎是没有办法得到我想要的。然而它说的是:

最简洁的答案是不。基类对派生自哪个类一无所知——这也是一件好事。[...]也就是说,在构造函数 Derived1::Derived1 开始之前,该对象不会正式成为 Derived1 的实例。

但是在我的情况下,我不想知道它什么,而是它会变成什么。事实上,只要用户可以(事后)将它映射到一个类,我什至不在乎我得到了什么。所以我什至可以使用返回指针之类的东西并摆脱它。

(现在回到阅读该链接)

0 投票
2 回答
158 浏览

c# - 泛型问题

我有一个通用类

signalType 是一个抽象类。如何声明一个动态字段来存储它?以下代码将引发编译错误,说明 Decoder 必须是非抽象类型泛型。

0 投票
5 回答
16738 浏览

c# - 将抽象只读属性覆盖为读/写属性

我只想强制在基础抽象类的给定属性上实现 C# getter。如果需要,派生类还可以为该属性提供一个设置器,以供公众使用静态绑定类型。

给定以下抽象类:

如果我想要一个也实现 setter 的派生类,我可以天真地尝试:

但是后来我得到一个语法错误,因为我尝试覆盖不存在的设置器。我尝试了其他一些方法,例如将 base setter 声明为私有等,但我仍然偶然发现各种错误阻止我这样做。必须有一种方法可以做到这一点,因为它不会破坏任何基类合同。

顺便说一句,它可以用接口来完成,但我真的需要那个默认实现。

我经常偶然发现这种情况,我想知道是否有隐藏的 C# 语法技巧可以做到这一点,否则我将忍受它并实现手动 SetProperty() 方法。

0 投票
2 回答
9421 浏览

c++ - 指向抽象模板基类的指针?

我无法弄清楚这一点。我需要一个抽象模板基类,如下所示:

现在,我从中得出,它指定了 Dendrite 的确切用法。

现在的问题。

如何创建一个指向没有特定类型的基类的指针向量,我想通过稍后将元素推送给它来指定它?就像是:

这是可能的还是我在这里遗漏了一些非常基本的东西?

0 投票
1 回答
1586 浏览

java - 带有抽象方法的 groovy 模拟

我有一个名为 Parameter 的 Java 对象,我正在尝试使用 groovy 来模拟它。参数是具有1个抽象方法的抽象类。它还有一个名为 getName() 的非抽象方法。我试图在 Groovy 中模拟如下:

但是我得到一个运行时错误,因为我没有实现抽象方法。如果我试图创建一个模拟,为什么我需要实现抽象方法?

谢谢,杰夫

0 投票
4 回答
3407 浏览

c++ - 最佳操作系统抽象?

我正在寻找一些东西来抽象 C/C++ 中的标准操作系统功能:跨越/杀死线程、发送/接收消息、启动/停止计时器,甚至可能是内存管理,尽管我自己可以用我的自己的缓冲池。

我希望能够在 Linux/windows 上开发和单元测试,然后为各种目标 O/Ses 重新编译 c/c++ 代码(对于嵌入式系统:eCos、FreeRTOS、VxWorks 等)

尽可能“轻”的东西是最好的,希望只是一个库,甚至是宏的集合。

0 投票
3 回答
13399 浏览

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 使用相同的格式:

是一个例子。

0 投票
9 回答
1030 浏览

c - 是否可以在没有分号的情况下执行“C”语句

发布一个示例以执行不带分号(;)的“C”语句

0 投票
1 回答
2117 浏览

wcf - 带有抽象 DataMember 数组的 WCF DataContract

我无法使这种情况发挥作用。这是模式-

我尝试使用 KnownType 或 KnownServiceType 注释几乎所有内容,但无济于事。

如果我将 BaseT 设为抽象,则会收到反序列化错误“无法实例化抽象类”。如果我使 BaseT 具体化,我不会收到反序列化错误。相反,当我将它转换为 ChildT 时,我得到“无法将 'BaseT[]' 类型的对象转换为 'ChildT[]' 类型”。