[疑难] 类构造器与泛型

tuja 2007-11-26

由于类构造器不支持泛型, 如果类构造器要接受多种不同的参数类型, 那么类似下面的代码可能要重复10次以上, 显得比较烦琐:
    this(int a, int b)
    {
        this.a = a;
        this.b = b;
    }
        static MyClass opCall(int a, int b)
        {
            return new MyClass(a, b);
        }


如果是free function, 则可以用 static if 来区分,一个函数就可以解决, 但类有类的优点.

我想到的解决方法是:
1 用struct, 在struct里用一个free function ff, 然后alias ff opCall
  但是用了struct就不能继承.

2 用类, 把多变的参数放到free function里, 用下面的方式来调用:
 
  MyClass(int a, int b).parse(int c)
  

  上面a表示固定类型参数, c表示泛型参数.

有没有更好的解决办法?
Global site tag (gtag.js) - Google Analytics