Невозможно преобразовать 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>