2010-12-13 6 views
3

J'obtenu l'erreur suivante:erreur C3646: 'fermeture': spécificateur override inconnue

error C3646: 'closure' : unknown override specifier 

Le code:

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); 
} 

Savez-vous pourquoi je cette erreur?

+1

Johannes est juste. Je pense que c'est une erreur intéressante à faire, cependant. –

Répondre

9

operator est un mot-clé. La séquence operator = essaie de déclarer un opérateur d'affectation qui dans votre cas aurait un type de paramètre de pointeur. Et votre compilateur veut analyser le dernier closure en tant que spécificateur spécial comme override (une extension de MSVC), const ou autre.

Renommer la variable à quelque chose d'autre, comme myoperator. L'explication de

+0

Je remarque que SO a utilement montré le mot-clé 'operator' dans une couleur bleu foncé, au lieu du noir habituel. –

+0

@Greg En effet, j'ai triché :) –

+0

:-P Stupid stuffs :-D – Spectral