Matrix<T, Dynamic, Dynamic>::InnerIterator
似乎没有使用标准方式(operator *
)取消引用它。
它有一个成员函数value()
。
我感到很惊讶,因为这与第三方算法(如STL算法)不能很好地接口。
为什么它没有声明operator *
?更糟糕的是value()
不会通过引用返回,因此您无法更改指向元素的基础值。使用它的正确方法是什么?
答案 0 :(得分:1)
这是因为大多数情况下,单独的值在没有相应的内部/行/列索引的情况下无效,由private void Form1_Load(object sender, EventArgs e)
{
this.myBindingSource.DataSource = new SampleModel();
var bindingManager = this.BindingContext[this.myBindingSource];
bindingManager.BindingComplete += bindingManager_BindingComplete;
}
Dictionary<Control, Color> Items = new Dictionary<Control, Color>();
private void bindingManager_BindingComplete(object sender, BindingCompleteEventArgs e)
{
var control = e.Binding.Control;
//Store Original BackColor
if (!Items.ContainsKey(control))
Items[control] = control.BackColor;
//Check If there is an error
if (!string.IsNullOrEmpty(e.ErrorText))
{
control.BackColor = Color.Salmon;
this.errorToolTip.SetToolTip(control, e.ErrorText);
}
else
{
e.Binding.Control.BackColor = Items[e.Binding.Control];
this.errorToolTip.SetToolTip(control, null);
}
}
返回。在其他情况下,您只关心指数。无论如何,如果需要,您可以轻松编写一个小包装器以使其与STL兼容。
最后,如果要修改该值,则非const引用返回index()/row()/col()
方法。