我想要实现的是拥有一个透明的"统一类,它可以包含满足许多条件的许多类中的一个项(其中一个是从UIView继承)。透明的意思是,如果我向这个泛型类询问它不包含的属性(直接),它会检查其中的项是否自动包含该属性。如果没有,我不确定如何更好地描述这个 例如,所以这就是我想要实现的目标。
而不是:
objectOfGenericClass.itemInside.center
我想要这个:
objectOfGenericClass.center
在泛型类中没有荒谬的重复代码,如下所示:
public var center:CGPoint{
return itemInside.center
}
如果我需要更具体,请提出问题,但我可能会在会议中花费几个小时(当我回来时会删除这一点)
答案 0 :(得分:1)
您似乎习惯了动态语言的功能。欢迎来到静态世界!在这里,所有签名都必须在编译时知道。
这应该从根本上回答你的问题:不,你想要什么(自动调度)是不可能的。
在Swift中调度并非易事。 This似乎是一个不错的概述。
答案 1 :(得分:0)
当我假设您想要以下内容时,我是否正确理解您的问题?
class A // could e.g. be UIView
{
protected:
int a1;
int a2;
};
class B : A
{
protected:
int b1;
int b2;
};
class C : A
{
protected:
int c1;
int c2;
};
class GenericClass : public B, public C
{
/* ... */
};
.....
GenericClass myObject();
int some_a1 = myObject.a1; // get members of other classes..
int some_a2 = myObject.a2;
如果GenericClass是从C类和B类派生(继承),并且您要求的类成员是公共的或受保护的(非私有的),则上述情况是唯一可能的。私有成员不适用于派生类。然而,人们必须非常小心钻石问题(https://en.wikipedia.org/wiki/Multiple_inheritance),并且不应该(我个人认为)不鼓励这种情况。
但是,按照我理解你的问题的方式,这确实提供了解决方案。
没有继承,这是不可能的。人们不能轻易地检索一个班级的列表。成员,请参阅:How to get a list of a class's member variables in C++?