Невозможно преобразовать TRectF обратно из TValue

Я использую C++ Builder 10.2.3 (Rad Studio 10.2.3).

У меня есть значение, хранящееся в TValue. Но когда я пытаюсь преобразовать его обратно в TRectF, Я получаю сообщение об ошибке:

Исключение класса EInvalidCast с сообщением 'Invalid class typecast'

Почему это происходит?

Ниже приведена часть кода, который я пытался воспроизвести:

      typedef std::map<UnicodeString, Rtti::TValue> TMyMap;
TMyMap MyData;
TRectF MyRect = TRectF(125, 125, 200, 200);
MyData["Rects"] = TValue::From<TRectF>(MyRect); 

Ошибка возникает, когда я пытаюсь:

      TValue rect = MyData.at("Rects");
TRectF newRect = rect.AsType<TRectF>(); //Error line

И, конечно же, для работы кода необходимо добавить некоторые заголовки, подобные приведенным ниже:

      #include <vector>
#include <System.Classes.hpp>
#include <System.Rtti.hpp>

0 ответов

Другие вопросы по тегам