класс SerHandler.
В этом классе есть вызов функции:
state = processOutcomingMessageBody<ClientPayload, RegistrationInfo>(bodyBuffer,message.mBody);
Тип ClientPayload я достаю посредством инклюда файла, #include <Utility.Static/ClientPayload.hpp> в котором есть неймспейс Utility, в котором лежит ClientPayload
Функция выглядит вот так:
template <typename T, typename U>
SerializedState processIncomingMessageBody(yas::shared_buffer& bodyBuffer,
Message& message)
{
try
{
auto registrationRequest = std::make_pair<T,U>(T t, U u);
SerializedState state = YasSerializer::template deserialize<T, U>(bodyBuffer, messageInfo);
if (state == SerializedState::SUCCESS)
{
message.mBody = std::make_any<T>(messageInfo);
}
return state;
}
catch (const std::bad_any_cast& e)
{
std::cout << e.what() << '\n';
std::cout << "Message body cann't be deserialized\n";
return SerializedState::FAILURE;
}
}
Но при компиляции выдаёт ошибки:
error C2275: T: недопустимое использование этого типа в качестве выражения
error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "t"
auto registrationRequest = std::make_pair<T,U>(T t, U u); Вот ошибка
std::make_pair<T, U>(T(), U());
Сделал вот так: std::pair<T,U> registrationRequest = std::make_pair<T, U>(T t(), U u()); Теперь пишет: error C2039: "ClientPayload": не является членом "Utility". Хотя у меня есть #include <Utility.Static/ClientPayload.hpp>, в котором есть неймспейс Utility и там есть класс ClientPayload.
Вы прочитайте то что я написал еще раз и сравните как переписали это
Спасибо большое, вроде помогло.
В классе не может быть вызова функции, класс это не код.
Обсуждают сегодня