C ++ Operator () und 'using' Deklaration: Der linke Operand muss ein l-Wert Fehler sein

8

Das folgende Beispiel veranschaulicht ein komplexeres, aber nicht unähnliches Problem, das ich elegant lösen wollte. Ich habe eine Reihe von Vorlagen, die spezialisiert sein müssen und dabei eine oder beide der zwei Schnittstellen implementieren: lesbar und beschreibbar, in jeder Spezialisierung. Specific implementiert beide Schnittstellen und wird dann mit main getestet:

%Vor%

Der obige Code schlägt auf VS 2008, 2010 mit dem folgenden fehl:

  

Fehler C2106: '=': linker Operand muss l-Wert sein.

Das kommt mir seltsam vor: Habe ich etwas Einfaches übersehen? Ich habe genau diesen Code mit dem Operator [] kompiliert und ausgeführt, und alles war gut (wie es sollte und immer war). Es scheint sich um ein Problem zu handeln, das sich speziell auf das Verhalten dieses Operators bezieht, ein Problem, mit dem ich nicht vertraut bin.

    
Liam M 04.01.2012, 03:43
quelle

1 Antwort

5

Dies ist ein Compilerfehler: Die using-Deklaration sollte funktionieren. Um das Problem zu umgehen, verwenden Sie einfach delegation:

%Vor%

Diese Implementierung ist länger als die tatsächlich delegierte Implementierung, vermeidet aber Probleme, wenn sich die Version in Readable jemals ändert.

    
Dietmar Kühl 04.01.2012, 05:32
quelle