Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
оператор: функция в качестве левого операнда
Замечания
Функция находится слева от указанного оператора. Наиболее частая причина этой ошибки состоит в том, что в результате синтаксического анализа компилятор воспринял идентификатор в левой части оператора как функцию, хотя по замыслу разработчика это должна быть переменная. Дополнительные сведения см. в статье Википедии "Большинство вехообразующих синтаксического анализа".
Примеры
В этом примере показаны объявление функции и определение переменной, которые легко перепутать.
// 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";
}
Для разрешения этой проблемы измените объявление идентификатора таким образом, чтобы он не воспринимался как объявление функции.
Ошибка C2659 также может возникать, если функция имеет тип, который не может использоваться в выражении слева от указанного оператора. Этот пример приводит к возникновению ошибки C2659, когда код присваивает функции указатель на функцию:
// C2659b.cpp
// Compile using: cl /W4 /EHsc C2659b.cpp
int func0(void) { return 42; }
int (*func1)(void);
int main()
{
func1 = func0;
func0 = func1; // C2659
}