问题标签 [derived]

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 回答
739 浏览

c++ - C++ 在映射中存储派生对象

是的,我对 c++ 还很陌生,所以我仍然在这里学习。如果我以错误的方式进行此操作,请告诉我,但如果可能的话,请尝试为我指出正确的方向(可能带有指向教程的链接)。

我一直在玩 std::map 并用它来存储对象(项目)。这工作正常。问题是试图在地图中存储派生项目。我已经让它工作了,但它似乎正在分割派生对象。

所以说项目具有属性a,b和c。食物来自具有额外属性 d 和 e 的项目。当 d 和 e 存储在项目地图中时,我无法访问它。编译器说:

“错误:‘类项目’没有名为‘d’的成员”

是否可以多态使用 std::map 或者我需要使用另一个库,如 boost?Boost 看起来相当复杂,我希望在我还在学习的时候有办法用 map 来做。这是我正在玩的一些代码,以使我的意思更清楚。

项目映射声明如下:

像这样添加东西:

这有效,但我无法访问派生项目的 d 和 e 。

谢谢你们的帮助

0 投票
4 回答
2852 浏览

c++ - 派生类在 C++ 中携带不同数据类型的最佳方式

在 C++ 中提供接口的最优雅方式是什么,该接口接受派生类类型,这些类型携带不同的数据类型成员,然后需要稍后检索。下面的示例说明了这一点,其中 Container 类提供了“发布”一个 Item 的方法,该 Item 将是 BaseItem 的某种派生变体。稍后我想取回派生的 Item 并提取它的值。

我想要的主要是容器接口(发布和接收)在未来保持不变,同时允许定义不同的“项目”派生类型并通过它“传递”。不知何故,模板会更好吗?我宁愿不使用RTTI。也许对此有一些简单而优雅的答案,但现在我正在努力思考它。

0 投票
1 回答
70 浏览

c++ - 将任何派生类使用的函数放在基类中?

像上面的例子一样,将所有可能的函数放置在基类中的任何派生类中是否存在或可能存在任何设计问题或不可预见的后果?

0 投票
5 回答
268 浏览

c++ - C++:我可以编写一个从 T 派生的模板类吗?

我不完全确定如何用英语表达这个,但我想做这样的事情:

基本上,我有一个模板类,但我从模板中指定的类派生一个新类?即,所以我不一定在编译时知道该类。

这甚至可能吗?
如果是这样,这个的语义是什么?

例如,假设我正在尝试编写一个“父”类。出于本示例的目的,假设它是一个树父级。树的父级是树本身(因此它继承自树),但也有一个对子树的引用向量。
但是,父类本身不一定是树;它可以是任何类,这样我就可以编写如下内容:

0 投票
2 回答
182 浏览

c++ - 如何从另一个派生类访问派生类的成员?

我有一个父类,我有 2 个从该父类公开派生的类。例如。

问题:我想从另一个派生类访问一个派生类的私有成员。我该怎么做呢?

我现在的方法如下:将cDerived1对象作为参数传递给cDerived2的ctor。如果我这样做,那么我必须将 cDerived2 声明为 cDerived1 的朋友,并在 cDerived2.h 中包含 cDerived1.h

这是正确的做法还是我做错了什么?

谢谢。

回应保罗的评论:我已经在父类中有共享代码,如下所示。

0 投票
0 回答
979 浏览

asp.net-mvc - MVC4 De/Serialization with JSON / JSON.NET - 列表和里面的派生类型

我正在尝试通过 JSON 与 MVC4 控制器进行一些基本的通信。我需要在这两点发送和接收数据。对于正在使用 RestSharp 的客户。

我的问题是,TheObjectIWantToTransfer 的列表在传输到服务器时没有值。这就是为什么我也开始在控制器端使用 Json.NET。

这些是示例类,我想转移的东西看起来如何。

我也尝试使用

使用 JsonConvert 序列化/反序列化。输出改变了,但我仍然没有让它工作。他找不到引用的类型,我不知道如何在控制器上接收 TypeNameHandling.All Json.NET 对象。我创建了 JsonNetResult,它使我可以使用 TypeNameHandling.All 进行序列化并将数据发送到客户端。但我无法使用 Json.NET 接收/反序列化?

我只需要一个解决方案。如果可能的话,我很乐意保留 MVC 的正常 Json() 方法。

我不敢相信它不适用于数组中的派生类型。必须有某种属性或破解来激活它。

或者我正在做一些疯狂的事情,真的非常错误..

谢谢 !

0 投票
0 回答
338 浏览

xcode - Xcode4 派生/构建/中间产品数据路径:真的必须在用户设置中定义吗?

大量资源告诉如何设置这些文件夹,但我仍然对基础设施不满意。我需要的是这个:

  • 我不想使用默认文件夹(在干净的 Xcode 4 安装中预设,具有默认项目或工作区设置)。

  • 我想将它们放入相对于项目(或工作区)的目录中

因此,我对项目设置进行了必要的更改,文件被放置在预期的位置,但是项目和工作空间设置,告诉 Xcode 将电子产品放在它们的外壳所在的位置,存储在 xcuserdata/$USER.xcuserdatad/Workspace{或项目}.设置。

哪个(.settings)在SCM中自然是不能被跟踪的。

结果 - 如果其他用户再次结帐,他会打开项目(或工作区),最终将构建产品放入默认路径(用户的主文件夹),而不是工作区{或项目}中指定的那些。设置 XML 文件 - 因为 xcuserdata/ 文件夹没有被跟踪,用户当然有不同的登录名。

我希望 XML 文件与 contents.xcworspace XML 同级,可以在用户设置中覆盖。显然,这是不可用的,至少没有记录,是吗?

那么是否有另一种可能性可以满足我的需求?

0 投票
3 回答
809 浏览

c++ - 派生对象的增强序列化不调用派生的序列化()

我已经阅读了大量类似的问题,但没有找到答案。我正在使用 Visual Studio 2010 和 boost 1.47。

这是代码,它是完整且可编译的:

你可以看到它真的很简单,我已经添加了 BOOST_CLASS_EXPORT 和 oa.register_type 魔法,它应该确保 DerivdObject::serialize() 被调用,即使它不是虚拟方法.. 但仍然只有 serialize() 在BaseObject 被调用。可能是 Visual C++ 特有的问题?请指教?

0 投票
0 回答
64 浏览

.net - 创建在不同程序集中派生的类的实例

我很难为这个问题想出一个标题。这是我描述这个问题的最佳方法。

我在这里使用了通用类名,但要点是一样的。

在名为 Common.dll 的 DLL 中,我有一个名为 FormControl 的类。它显示一个按钮栏和许多表单元素。然后我有一个名为 MButtonBar 的类。此类包含它显示的 MButton 对象的集合。

我有两个单独的应用程序将使用 FormControl。这些是相关的应用程序。但是,在其中一个应用程序中,我希望它创建一个名为 XButton 的按钮的实例,XButton 是从 MButton 派生的。

问题是FormControl创建了按钮栏,而按钮栏创建了按钮,都在Common.dll中,它不知道XButton。

有没有办法让 Common.dll 中的按钮栏创建 XButton 的实例?使用 Activator.CreateInstance 或工厂的任何方式。一些优雅的机制,我传入要实例化的类名。

另一种解决方案是派生一个新的 FormControl 并覆盖 create button bar 方法。然后派生一个新的按钮栏,并从我派生的 FormControl 中创建这种类型的按钮栏。然后在派生的按钮栏中,我可以覆盖创建按钮方法并创建 XButton,但这似乎需要做很多工作。

0 投票
4 回答
195 浏览

c# - 如何在通用消息接收器中为不同的类类型调用不同的方法?

假设我有一个名为 IMessage 的基类,以及许多派生消息类。

在我的程序中,我有一种接收所有消息的方法:

我想为每种类型的消息调用一个特定的方法。如果我能做到,那就太好了:

..但显然“我们不会那样出去”。

那么我将如何为特定消息实现特定处理程序,从单个消息处理程序调用?