2010-12-13 73 views
3

Iました次のエラー:エラーC3646: '閉鎖':不明オーバーライド指定

error C3646: 'closure' : unknown override specifier 

コード:私はこのエラーを持っている理由

void BaseOperator::mousebutton_cb(EventObject* sender, EventArgs* calldata, void* closure) 
{ 
    xd3D::Operation::Operator::BaseOperator* operator = (xd3D::Operation::Operator::BaseOperator*)closure; 
    MouseButtonEventArgs* e = (MouseButtonEventArgs*)calldata; 
    if (e->Status == Down) 
     operator->OnMouseButtonDown(e); 
    else 
     operator->OnMouseButtonUp(e); 
} 

あなたは知っていますか?

+1

ヨハネスの説明が正しい。しかし、それは面白い間違いだと思う。 –

答えて

9

operatorはキーワードです。配列operator =は、代入演算子を宣言しようとします。代入演算子は、ポインタパラメータ型を持ちます。そして、あなたのコンパイラはoverride(afaik、MSVCの拡張子)、constなどの特別な指定子として、最後のclosureを最後に解析したいとします。

変数名をmyoperatorなどの名前に変更します。

+0

私は、SOが、通常の黒色ではなく、濃い青色の 'operator'キーワードを有用に示していることに気付きました。 –

+0

@Greg確かに、私は騙されました:) –

+0

:-P愚かなもの: - D – Spectral