小编Alt*_*tan的帖子

是否可以使用成员枚举专门化模板?

struct Bar {
  enum { Special = 4 };
};

template<class T, int K> struct Foo {};
template<class T> struct Foo<T,T::Special> {};
Run Code Online (Sandbox Code Playgroud)

用法:

Foo<Bar> aa;
Run Code Online (Sandbox Code Playgroud)

无法使用gcc编译4.1.2它抱怨使用T::SpecialFoo的部分特性.如果Special是一个类,解决方案将是前面的类型名称.枚举(或整数)是否有相当于它的东西?

c++ enums templates template-specialization

20
推荐指数
2
解决办法
4263
查看次数

在Objective C中需要多重继承

我想实现一个可移动的UIView类(当你触摸它并移动手指时视图移动),例如:

@interface MovableView : UIView {
  some members;
 }
-touchesBegan;
-touchesMoved;
@end
Run Code Online (Sandbox Code Playgroud)

如何在没有多重继承的情况下将此代码应用于UILabel,UIButton等?在C++中,我会这样做(使用UIView作为MovableView的虚拟基础):

struct MovableLabel : UILabel, MovableView {};
Run Code Online (Sandbox Code Playgroud)

提供类别作为多继承的替代,但我绝对不希望使用类别扩展UIView,因为这将适用于我的应用程序中的所有视图.我只希望我的一些观点可以移动.

我目前避免代码重复的策略是将MovableView代码放在头文件中,并在每次需要某个类来使用它时包含它.除此之外,我必须将MovableView的成员添加到我正在编写的任何类中.这是纯粹的代码丑陋,但比我的项目中的复制/粘贴代码更好.

有没有人有任何其他想法来解决这个[没有多重继承]的Objective C限制?

谢谢,

俺答

iphone inheritance objective-c multiple-inheritance uiview

3
推荐指数
1
解决办法
4624
查看次数