对象O扩展了T1具有已定义类型的特征C。
在T1我想操作stackobject 中定义的静态数据结构O。但是编译器一直在抱怨
找到 T1.this.C 的类型不匹配,需要 OC
代码如下:
trait T1 {
 case class C(i: Int, s: String)
  def dumbAdd(i: Int, s: String) = {
    O.stack.push(C(i, s))  // type mismatch error goes here.
  }
}
object O extends T1 {
  var stack: Stack[C] = new Stack[C]
}
我很困惑...不O知道C并且应该与中的类型相同T1?我在这里想念什么?我该怎么做?
更新
根据一个建议放入Cobject T1,但在我的真实示例中,对象T1无法访问 trait 中定义的类型T1。减少的问题如下:
trait T1 {
  abstract sealed class S
  case class SC extends S
  def dumbAdd(i: Int, s: String) = {
    O.stack.push(C(i, s))
  }
}
object T1 {
  case class C(i: Int, s: String)
  def tryASC {
    val scc = SC() // Here the compiler says not found value SC
  }
}
object O extends T1 {
  var stack: Stack[C] = new Stack[C]
}