问题标签 [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 投票
2 回答
144 浏览

c# - 在基类中跟踪实例化

目前我以这种方式跟踪基类的实例数量:

然后我有像这样的构造函数的子类:

当然,我也有例外。我可以将代码从BaseClass构造函数移动到ChildClass构造函数,但这是一种冗余(所有子代码都具有相同的代码)。

有什么办法可以做到BaseClass吗?

ChildClass获取异常是否意味着我真的尝试根据上述代码创建多个实例?

0 投票
3 回答
209 浏览

c# - 在 C# 中跨类强制方法命名一致性

我在一个项目中有一系列类,它们基本上都做同样的事情,但在不同的对象上。由于其中一些是在不同的时间和不同的人编码的,因此在命名上存在一些不一致。我想以一种不仅在当前对象中而且在将来创建的新对象中强制保持某种一致性的方式更新我的代码。我对编程的理解使我相信我需要一个基类或一个接口,但我不知道如何让它们工作。我想要的方法是:

我遇到的问题是,在每个类中,“BusinessObject”和“EntityObject”都会有所不同,例如,在一个类中可能是“CarObject 和 CarEntity”,在另一个类中可能是“BusObject 和 BusEntity”。我仍然想要这两个方法,我仍然希望它们命名为 MethodA 和 MethodB 我只是想在实现中换出实际的对象类型。实现本身会有所不同,因为它们使用不同的对象。

我在编译时知道对象类型,并且需要能够访问对象的属性,所以如果使用泛型,我需要将泛型转换为实现中的正确类型。此外,MethodA 的实现需要创建一个“新的”BusinessObject,即“BusinessObject x = new BusinessObject()”,如果这有什么不同的话。

我尝试在方法中使用带有泛型的接口以及带有抽象方法的基类,但我无法弄清楚如何让它们工作。

处理这个问题的最佳方法是什么?示例代码将不胜感激。

0 投票
4 回答
5684 浏览

python - 从基本抽象类 Django 的子类中删除字段

我正在创建一个需要评论系统的应用程序。我决定使用 Django 的评论应用程序,但需要对其进行一些更改。首先,我不希望用户的电子邮件 ID 是强制性的,接下来我需要一个选项来附加带有评论的文件。

因此我决定从 BaseCommentAbstractModel 继承。现在我需要覆盖 user_email

并添加另一个字段

我的代码应该是这样的:

但这不起作用。user_email 仍然是强制性的。有任何想法吗?

0 投票
3 回答
5592 浏览

c++ - 模板基类的 C++ STL 容器

我正在尝试将派生自模板化基类的对象存储在 STL 映射中。但是,尝试插入派生(或实际上是基)对象会返回:

我知道使用派生类是使 STL 容器异构的一种公认方法 (http://www.parashift.com/c++-faq-lite/containers.html#faq-34.4)。我想知道在这种情况下是否可以使用模板。这将非常方便,因为我可以在基类中对一系列容器进行单一声明,这些容器在编译时为我的各种类型实例化,而不是在非模板派生类中重复声明。

我的代码如下:

我尝试在派生类指针上执行 dynamic_cast 以将其转换为基指针类型,但这也不起作用:

0 投票
1 回答
2331 浏览

c++ - 自定义 Directshow 过滤器的属性页

我设法创建了一个自定义 DirectShow 转换过滤器,注册它,并将其导出到 DLL 中。它现在可以在 GraphEdit 和 C++ 测试程序中正常工作。我的下一个目标是创建一个自定义界面来控制过滤器的主要参数,从测试应用程序或从 GraphEdit 中的属性页。

按照这些说明,我的自定义界面从 C++ 测试程序中正常工作。但是,我在使用属性页时遇到了困难:我在 GraphEdit 中不断收到错误消息“无法显示请求的属性页”。

在调试时,我发现唯一调用的方法(在我的自定义属性页类中,从 CBasePropertyPage 派生)是OnConnect()OnDisconnect()- 奇怪的是(或不是?)调用了两次。在这两种方法之间,对 CBasePropertyPage 方法(基类中的文件 cprop.cpp)进行了一些调用,一切看起来都很好,直到:

STDMETHODIMP CBasePropertyPage::Activate(HWND hwndParent, LPCRECT pRect, BOOL fModal)

更准确地说

m_hwnd = CreateDialogParam(g_hInst, MAKEINTRESOURCE(m_DialogId), hwndParent, DialogProc, (LPARAM) this);

我总是得到m_hwnd0,导致方法返回错误。我试图GetLastError()在这条指令之后立即添加,但它总是返回 0,没有错误。此外,CreateDialogParam()看起来每个参数都已正确初始化......

任何帮助将不胜感激 !


编辑

现在,为了至少有一个工作示例,我使用了MSDN 教程中描述的相同资源/模板。


---编辑2---

在进行更多调试时,我尝试从 Dialog 资源中删除每个控件(按钮、滚动条)。之后......一切正常。CreateDialogParam()返回一个正确的值,我的类OnActivate()被调用等等。我最终在 GraphEdit 中获得了一个“过滤器属性”页面,但为空(默认对话框窗口除外)。

但只要我有一个控件,例如一个 MF 命令按钮,就会出现以前的问题。

DirectShow 基类和我使用的控件之间是否存在某种不兼容?(如果是这样,为什么提供的示例没有提及任何内容?)有没有更简单的方法可以将控件添加到属性页?

(我绝对不是GUI 和 Win32 控件方面的专家……)

0 投票
4 回答
5979 浏览

c# - 我可以有一个基类,其中每个派生类都有自己的静态属性副本吗?

我有类似以下情况:

我正在尝试进行设置,以便每个派生类都有自己的 x 静态实例,如果我执行以下操作:

然后当我运行时:

我可以做这样的事情吗?如何设置派生类来实现这一点?多谢你们。

编辑:基本上,我有一堆派生类,每个派生类都有该类独有的属性。它不会因每个实例而异,因此我认为应该是一个静态变量。此外,该属性是由一个方法设置的,对于这些类中的每一个都是相同的。我试图避免在每个派生类中复制和粘贴该属性和方法的逻辑。我认为最好以某种方式将该逻辑移至派生这些类中的每一个的基类。但是,我需要每个派生类都有自己的该属性的副本。我不一定必须这样做,如果你们有任何更好的实践建议,我会很高兴听到一些......谢谢!

0 投票
3 回答
149 浏览

c++ - 为容器生成成员类型

当我定义自己的容器时,我必须提供十几种成员类型,例如:

是否有我可以继承的基类模板,类似于std::iterator<T>我自己的迭代器?

0 投票
1 回答
920 浏览

c# - 如何在没有泛型的情况下在基类中获取派生类的类型?

我的基类使用派生类的反射来为它们提供一些功能。目前我这样做:

我可以在没有泛型的情况下做到这一点吗?

0 投票
4 回答
188 浏览

c# - 在 C# 中,如何将基类声明为私有?

我知道如何在 C++ 中做到这一点:

我如何在 C# 中做同样的事情?

这就是我目前在 C# 中所拥有的

如何指定 baseClass2 是私有的?

0 投票
3 回答
692 浏览

c++ - 如何在编译时查询一个类的所有基类?

std::is_base_of<A,B>::value可以检查一个类是否是 class的A基类。是否也可以在编译器中查询一个类的所有基类 ,例如,返回一个包含所有基类的 std::tuple 之类的东西?BBbase_classes_of<B>B

有没有evtl。g++ 中的非标准扩展可以实现这一点?

如果这根本不可能,有谁知道为什么?这听起来像是编译器应该很容易获得的一条相当基本的信息?

例子: