我正在尝试创建一个通用容器(例如下面的Java代码),它具有一些限制,例如不能将大于某个限制的项目放入其中。问题在于,由于T是未知类型,具有整数的比较函数报告错误。如何解决这个问题?

其次,如果代码是用C ++编写的,是否有解决方案?

public class Box<T> {
    private T val;
    private int max;

    public Box (int m, T initval) { max = m; val = initval; }

    public T get() { return val; }
    public void set(T newval) {
        val = newval;
        if(newval.toInt() >= max)    // error on toInt
             System.out.printf("ERR: size too big\n");
        }
}

最佳答案

你应该有

interface ToIntable {
  int toInt();
}




public class Box<T extends ToIntable> {
...
    if (newval.toInt() >= max) doSomething();
...
}

10-08 14:33