在 C++ 中实现串联继承
Implement concatenative inheritance in C++
是否可以在 C++ 中实现连接继承或至少混合?
感觉用C++做是不可能的,但是我无法证明。
谢谢。
根据this article:
Concatenative inheritance is the process of combining the properties
of one or more source objects into a new destination object.
我们是在谈论 class 继承吗?
这是 C++ 中 public 继承的基本方式。由于多重继承,您甚至可以组合多个基础 classes。
但是可能会有一些限制(例如,必须解决不同来源之间的名称冲突,具体取决于您可能需要虚函数的用例,并且可能需要显式创建组合构造函数)。
或者从实例化对象继承是什么意思?
如果它真的是关于对象而不是 classes,那么情况就不同了。您不能将随机类型的对象相互克隆和组合,因为 C++ 是一种强类型语言。
但首先,让我们纠正误导性的措辞。这与串联继承无关,因为继承是针对 classes 的。而是 "concatenative prototyping",因为您通过接管现有对象的值和行为来创建新对象。
要在C++中实现某种"concatenative prototyping",你需要设计它,基于组合的原则,使用一组定义良好的"concatenable"(即可组合)基classes。这可以通过使用 prototype design pattern together with the entity-component-system 架构来实现。
目的是什么
您目前正在寻找这种构造,可能是因为您在动态类型语言中大量使用了它。
所以请记住 popular quote(马克吐温?马斯洛?):
If you have a hammer in your hand, every problem looks like nails
所以问题是你真正在寻找什么以及你打算解决什么问题。恕我直言,不能排除其他习语可能更适合 C++ 世界来实现相同的 objective。
是否可以在 C++ 中实现连接继承或至少混合?
感觉用C++做是不可能的,但是我无法证明。
谢谢。
根据this article:
Concatenative inheritance is the process of combining the properties of one or more source objects into a new destination object.
我们是在谈论 class 继承吗?
这是 C++ 中 public 继承的基本方式。由于多重继承,您甚至可以组合多个基础 classes。
但是可能会有一些限制(例如,必须解决不同来源之间的名称冲突,具体取决于您可能需要虚函数的用例,并且可能需要显式创建组合构造函数)。
或者从实例化对象继承是什么意思?
如果它真的是关于对象而不是 classes,那么情况就不同了。您不能将随机类型的对象相互克隆和组合,因为 C++ 是一种强类型语言。
但首先,让我们纠正误导性的措辞。这与串联继承无关,因为继承是针对 classes 的。而是 "concatenative prototyping",因为您通过接管现有对象的值和行为来创建新对象。
要在C++中实现某种"concatenative prototyping",你需要设计它,基于组合的原则,使用一组定义良好的"concatenable"(即可组合)基classes。这可以通过使用 prototype design pattern together with the entity-component-system 架构来实现。
目的是什么
您目前正在寻找这种构造,可能是因为您在动态类型语言中大量使用了它。
所以请记住 popular quote(马克吐温?马斯洛?):
If you have a hammer in your hand, every problem looks like nails
所以问题是你真正在寻找什么以及你打算解决什么问题。恕我直言,不能排除其他习语可能更适合 C++ 世界来实现相同的 objective。