Hi, I couldn't find an answer anywhere else, hopefully you can help me.
I have the following class: class Pair { friend struct ignite::binary::BinaryType<Pair>; public: Pair() { _len = 0; _buff = nullptr; } Pair(char* buff, int len) { _len = len; _buff = new char[len]; for (int i = 0; i < len; i++) { _buff[i] = buff[i]; } } ~ Pair() { delete[] _buff; } private: char* _buff; int _len; }; I try to serialize the class into cache in the following manner: template<> struct ignite::binary::BinaryType<Pair> { static int32_t GetTypeId() { return GetBinaryStringHashCode("Pair"); } static void GetTypeName(std::string& name) { name = "Pair"; } static int32_t GetFieldId(const char* name) { return GetBinaryStringHashCode(name); } static bool IsNull(const Pair& obj) { return false; } static void GetNull(Pair& dst) { dst = Pair(); } static void Write(BinaryWriter& writer, const Pair& obj) { BinaryRawWriter rawWriter = writer.RawWriter(); int len = obj._len; char* buff = obj._buff; rawWriter.WriteInt32(len); auto binWriter = rawWriter.WriteArray<char>(); for (int i = 0; i < len; i++) { binWriter.Write(buff[i]); } binWriter.Close(); } static void Read(BinaryReader& reader, Pair& dst) { BinaryRawReader rawReader = reader.RawReader(); dst._len = rawReader.ReadInt32(); dst._buff = new char[dst._len]; auto binReader = rawReader.ReadArray<char>(); for (int i = 0; i < dst._len; i++) { dst._buff[i] = binReader.GetNext(); } } }; When I try to compile I get errors as following: [image: image.png] If I comment out the parts of reading and writing the array it compiles successfully. Does this happen because I also need to serialize the write of 'char'? (If so, how do I do it?) Am I using the ReadArray and WriteArray correctly? Is there another way of storing the char buffer in cache? If someone can provide a working code snippet that would be amazing, but any help would be appreciated. Thanks a lot!