Megosztás a következőn keresztül:


C2659-ös fordítási hiba

"operátor" mint bal oldali operandus

Megjegyzések

Egy függvény a megadott operátor bal oldalán volt. A hiba leggyakoribb oka az, hogy a fordító függvényként elemezte az operátor bal oldalán lévő azonosítót, amikor a fejlesztő változónak szánta. További információkért lásd a Wikipédia cikkét: Legzavaróbb elemzés.

Példák

Ez a példa egy függvénydeklarációt és egy könnyen összetéveszthető változódefiníciót mutat be:

// 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";
}

A probléma megoldásához módosítsa az azonosító deklarációját úgy, hogy az ne legyen függvénydeklarációként értelmezve.

A C2659 hiba akkor is előfordulhat, ha a függvény olyan típussal rendelkezik, amely nem használható a megadott operátor bal oldalán lévő kifejezésben. Ez a példa c2659-et hoz létre, amikor a kód függvénymutatót rendel egy függvényhez:

// C2659b.cpp
// Compile using: cl /W4 /EHsc C2659b.cpp
int func0(void) { return 42; }
int (*func1)(void);

int main()
{
   func1 = func0;
   func0 = func1; // C2659
}