Hashtable myHT = new Hashtable();
myHT.Add("A",1);
myHT.Add("B",2);
....
myHT["A"]++;  //我想让对应key的value加一,但出错.
以前用的STL的map这样是没问题的.

解决方案 »

  1.   

    myHT["A"]是object类型的。怎么可以自加呢。
      

  2.   

    ((int)myHT["A"])++;  这样行嘛?但好象也错
      

  3.   

    以前用的STL的map这样是没问题的.
    因为你使用的HashTable并不支持泛型。需要先做类型转换。
      

  4.   

    myHT["A"]=(int)myHT["A"]+1;  
    好象可以了,难道++没重载?
      

  5.   

    object 类没有重载 ++ 操作符 当然不可以
    而且里面是 1 是个常量++ 不了,也不是个指针
    子能取出来 ++ 在方回去
      

  6.   

    现在JDK5.0已经开始支持泛型了,不知道VC2005是不是也可以了.
    但我的问题是为什么
    myHT["A"]=(int)myHT["A"]+1;  //可以
    ((int)myHT["A"])++;          //出错这是最后的问题了  
      

  7.   

    不行,做类型转换也不行
    hash表用的是捆绑式的散列桶,在托管堆里面不是连续的,键和值捆绑在一起,失去一个,另一个就找不到了;当然,不能用++这种操作
      

  8.   

    myHT["A"]++;  //我想让对应key的value加一,但出错.answer:  自加运算只有数值类型和字符可以,比如字符串当然不行.
      

  9.   

    object类型不能++,如果要实现++,必须作类型转换。
      

  10.   

    仔细想了下,应该是这样的:
    1. myHT["A"]++;  
    这时候myHT["A"]是object,当然++不支持,大家都说到了.
    2. ((int)myHT["A"])++;  
    ((int)myHT["A"])应该是个临时变量,而++重载操作需要取变量的地址,但是临时变量是不能取地址的.也就是它只能是个右值,而不是l-value.出错的提示也符合.如果大家有其它的意见,可以讨论讨论.
      

  11.   

    很可能myHT["A"]表示一个值 而不是一个变量