Компилятор MSVC C ++ сообщает об ошибках C2589 и C2059 в по -видимому, правильной линии [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Компилятор MSVC C ++ сообщает об ошибках C2589 и C2059 в по -видимому, правильной линии [закрыто]

Сообщение Anonymous »

Я сталкиваюсь с ошибками постоянного компиляции < /p>
C2589 ('(': токен недействительный на правой стороне '::') и C2059 (синтаксическая ошибка: ')') с компилятором MSVC (Visual Studio 2022, версия 19.44.35207.1 из CXX Compiler) на My human_ty File. Ошибка в настоящее время сообщается в строке 261, которая содержит функцию вызова: tyseingLechar (rongchar); '(': Token Invalid on the right side of '::' [c: \ assistant_intelligent_cpp \ cpp_modles \ build \ assistant.vcxproj]
c:\Sist_intelligent_cppppppppppppppppppppppppppppppppppppppppppppppppppppppppp Syntax: ')' [c: \ assistant_intelligent_cpp \ cpp_modles \ build \ assistant.vcxproj] < /p>
line typeinglechar (rongchar); Это призыв к частной функции конечности из другого частного класса человека. Обе функции объявляются в Human_Thyping.h и определены в Human_typing.cpp.
human_typing.h (соответствующие части): c ++
// human_typing.h
#ifndef HUMAN_TYPING_H
#define HUMAN_TYPING_H

#include
#include
#include
#include
// ... outros includes necessários ...
#include // Para HWND, INPUT, etc.

class HumanTyping {
public:
HumanTyping();
~HumanTyping();
void typeText(const std::string& text, bool focusWindow = true);
void setTypingProfile(const std::string& profile);
void setCustomParameters(float baseDelay, float randomFactor, float mistakeProbability);

private:
// ... variáveis membro ...
std::mt19937 m_rng;
float m_correctionDelay;
// ... outras variáveis membro ...

void initializeNearbyKeys();
void initializeTypingProfiles();
void typeTextInternal(const std::string& text); // Declaração está presente e descomentada
void pressKey(int keyCode);
void pressKeyWithShift(int keyCode);
void typeSingleChar(char character); // Função chamada que reporta erro na chamada
void simulateMistakeAndCorrection(char character); // Função que chama typeSingleChar
float calculateDelay();
std::vector getNearbyKeys(char character);
};

#endif // HUMAN_TYPING_H
< /code>
human_typing.cpp (соответствующие части вокруг ошибок и определений): < /p>
c ++ < /p>
// human_typing.cpp
#include "human_typing.h"
#include
#include
#include
#include
#include
#include
// ... mapas estáticos globais (KEY_MAP, SHIFT_KEYS) ...
// ... outras definições de construtor, destrutor, métodos...

// Definição da função que chama
void HumanTyping::simulateMistakeAndCorrection(char character) {
std::vector nearby = getNearbyKeys(std::tolower(character));

if (!nearby.empty()) {
std::uniform_int_distribution dist(0, nearby.size() - 1);
char wrongChar = nearby[dist(m_rng)]; // Linha 260 (aproximadamente)

typeSingleChar(wrongChar); // ERRO REPORTADO AQUI (Linha 261)
std::this_thread::sleep_for(std::chrono::milliseconds(static_cast(m_correctionDelay * 1000 * 0.7)));
pressKey(VK_BACK);
std::this_thread::sleep_for(std::chrono::milliseconds(static_cast(m_correctionDelay * 1000 * 0.3)));
typeSingleChar(character);
} else {
typeSingleChar(character);
}
}

// Definição da função chamada
void HumanTyping::typeSingleChar(char character) {
auto shiftIt = SHIFT_KEYS.find(character);
if (shiftIt != SHIFT_KEYS.end()) {
char baseChar = shiftIt->second;
auto keyIt = KEY_MAP.find(baseChar);
if (keyIt != KEY_MAP.end()) {
pressKeyWithShift(keyIt->second);
}
} else {
char charToMap = character;
if (std::isalpha(character)) {
charToMap = static_cast(std::tolower(character));
}
auto keyIt = KEY_MAP.find(charToMap);
if (keyIt != KEY_MAP.end()) {
pressKey(keyIt->second);
}
}
}

// ... outras definições de funções membro ...
< /code>
То, что я уже пробовал: < /p>
Я проверил, что все функции членов, определенные в Human_theping.cpp (например, типняктеринал, simulathendarrection, typseinglechar и т. Д.). Я считаю, что все были удалены, и файл заканчивается правильно после последней определения функции. -Dcmake_toolchain_file = c: /vcpkg/scripts/buildesystems/vcpkg.cmake
cmake Строитель: Cmake -Build встроенный -конфиг.
Несмотря на эти усилия, ошибки C2589 /C2059 сохраняются в этой строке (или в линии закрытия, если я делаю небольшие издания в других местах. Сообщение об ошибке C2589 обычно указывает на отсутствие имени функции после :: (params), которое не кажется случаем в линии. Как компилятор анализирует структуру класса, несмотря на правильные операторы?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... te-correta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»