问题标签 [base-class]

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 投票
3 回答
1155 浏览

c# - C# - “投射”列表的简单方法列出?

我正在建立一个网站,其中包含三种主要类型的“在线新闻出版物”:ArticleBlogPostColumnPost. 在整个站点上,我有各种控件可以输出这些列表,混合在一起和未混合。因此,在许多控件上,我有一个文章列表,而在其他控件上,我可以有一个博客文章和专栏文章列表。在一些地方,我什至有文章、博客文章和专栏文章的列表。所以我围绕所有三个创建了一个包装类,称为Publication. 我以前的类继承如下:

使用我的新Publication包装器,它们看起来像:

现在我可以做这样的事情:

现在最重要的是,我使用 C# 中的中介者模式在许多可能需要重叠数据的竞争控件之间进行调解。我以前有一个,ArticleMediator但现在我把它改成了一个PublicationMediator

我的问题:

从基类列表中检索派生类列表的最佳/最简单方法是什么?所以我的中介基本上接受 aList<Publication>并返回 a List<Publication>。如果我知道列表中的所有内容都是 a Article,那么有什么简单的方法可以将其取回并将其转换为 a List<Article>?现在我正在做以下这似乎是很多代码,但如果这是我应该做的,那我很好。我只是想知道是否有更简单的方法:

PublicationList属性是List<Publication>中介已决定允许使用当前控件的返回值。我知道虽然我只想要 aList<Article>所以我必须遍历Publication列表中的每一个并确保它是 anArticle然后我必须将它添加到实际的List<Article>. 有没有更简单的方法来做到这一点?

我不想更改调解器以返回 aList<Article>的原因是因为在某些地方我需要两者BlogPostColumnPost所以我实际上需要将我的转发器绑定到 aList<Publication>并且在ItemDataBound我可以看到当前项目是否为BlogPostor ColumnPost

更新

我接受了接受的答案并将其作为扩展名:

0 投票
3 回答
6085 浏览

c++ - 奇怪的错误 c2660“函数不接受 1 个参数”

我的基类有这个功能

当派生类调用该函数时

我收到错误 C2660:“函数不接受 1 个参数”。

这是为什么 ?

0 投票
8 回答
533 浏览

c# - 基类实现注意事项

我写了一个类来做某事,一段时间后我发现许多其他类共享该功能,因此决定实现一个基类(C# 中的抽象)并将所有共享放入其中。

既然无法实例化这样的类,那么如何调试呢?

开发基类是否有任何实际考虑?

0 投票
3 回答
30505 浏览

c++ - C++:访问父方法和变量

我应该以哪种方式访问​​这个父方法和父变量?

谢谢。

编辑:如果有歧义怎么办?

0 投票
2 回答
7301 浏览

c++ - C++:受保护的类构造函数

如果一个类总是要被继承,那么构造构造函数是否有意义protected

谢谢。

0 投票
5 回答
1250 浏览

c++ - 基类 -> 派生类,反之亦然 C++ 中的转换

我有以下示例代码:

我无法编译它,G++ 会抛出一个错误:

我知道 C++ 大师的错误很明显,但我不明白为什么我不能从基类对象转换为派生对象。有人可以建议我解决我遇到的问题吗?谢谢你的建议

0 投票
4 回答
378 浏览

c++ - 如何重载和调用先前在其基类中定义的派生类中的方法?

这是基类:

这是派生类:

给定的错误是:

第 29 行:IntelliSense:不存在从“std::pair”到“long double”的合适转换函数

第 29 行:IntelliSense:函数调用中的参数太少

显然,问题是我无法从派生类访问基类中的方法,即使它是公共定义的。

如何使此代码工作?

(我的 IDE 是 Visual Studio 2010。)

0 投票
4 回答
15285 浏览

c++ - c ++将基类转换为派生类混乱

如果我要创建一个名为的基类和名为的派生base类等...我使用基类的实例集合,那么当我检索一个元素并尝试使用它时,我会发现 C++ 认为它的类型是基类的,可能是因为我从基类中检索到它。当我想使用仅存在于特定派生类的功能时,这是一个问题,当我将它放入向量时,我知道该对象的类型。derived_1derived_2std::vector

所以我将元素转换为它应该是的类型,发现这不起作用。

并记住这是一个指针。经过一些调整后,现在工作了。

这是正确的还是有一个abc_cast()功能可以减少混乱?

编辑:

我不得不将其扩展到另一个问题,那里显示了完整的解决方案。stackoverflow.com ...为什么多态类型错误和清理问题

0 投票
1 回答
374 浏览

design-patterns - 接口 + 基类 - 这是什么模式?

我已经定义了一个由基类实现的接口。该基类提供基本功能。现在我有多个实现来实现基类并用更多细节扩展这些功能。当我调用这些多个实现时,我将实现转换为接口(在基类中实现)。

有没有描述这种类型的接口使用的模式?还是这种架构适得其反?

问候

0 投票
2 回答
836 浏览

c# - 继承问题。如何创建基类的多个实例?

我有一个基类(PrintProviderBase)。它拥有一些状态(PrinterUnavailable, NoPaper, ...)。

然后我从这个类继承: ColorPrintProvider, BlackAndWhitePrintProvider...

我假设如果基类具有这样的属性:

然后每个子类(不同的打印提供者)都有自己的状态(尽管没有什么是静态的)。似乎base该类的一个实例在它们之间共享,而我的意思是在每个子类中都有一个副本,base class以便可以将通用功能和状态封装到base class.

现在,如果打印提供商进入NoPaper状态,其他提供商会由于状态不正确而停止打印。我怎样才能改变这种行为?