Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
operator: fungeert als linkeroperand
Opmerkingen
Aan de linkerkant van de opgegeven operator stond een functie. De meest voorkomende reden voor deze fout is dat de compiler de id aan de linkerkant van de operator heeft geparseerd als een functie wanneer de ontwikkelaar bedoelde dat deze een variabele is. Zie Het Wikipedia-artikel Most vexing parse voor meer informatie.
Voorbeelden
In dit voorbeeld ziet u een functiedeclaratie en een variabeledefinitie die gemakkelijk te verwarren is:
// C2659a.cpp
// Compile using: cl /W4 /EHsc C2659a.cpp
#include <string>
using namespace std;
int main()
{
string string1(); // string1 is a function returning string
string string2{}; // string2 is a string initialized to empty
string1 = "String 1"; // C2659
string2 = "String 2";
}
U kunt dit probleem oplossen door de declaratie van de id zodanig te wijzigen dat deze niet wordt geparseerd als een functiedeclaratie.
Fout C2659 kan ook optreden wanneer de functie een type heeft dat niet kan worden gebruikt in de expressie aan de linkerkant van de opgegeven operator. In dit voorbeeld wordt C2659 gegenereerd wanneer de code een functiepointer toewijst aan een functie:
// C2659b.cpp
// Compile using: cl /W4 /EHsc C2659b.cpp
int func0(void) { return 42; }
int (*func1)(void);
int main()
{
func1 = func0;
func0 = func1; // C2659
}