capnproto: Могу ли я получить AnyPointer из структуры?

Учитывая эту схему

struct TestObject
{
value1 @0 : Int32 = -5;
value2 @1 : Float32 = 9.4;
}

struct TestContainer
{
object @0: TestObject;
}

Можно ли получить AnyPointer :: Builder из TestObject :: Builder в коде c ++?

Вот что я пытаюсь сделать:

::capnp::MallocMessageBuilder message;
auto container = message.initRoot<TestContainer>();

TestObject::Builder objBuilder = container.initObject();

//Get an AnyPointer
capnp::AnyPointer::Builder anyBuilder = capnp::toAny( objBuilder )(); //No this does not work.

MyTestObject test( 41, 643.7f );
test.serialise( anyBuilder );

То, что я пытаюсь сделать, это иметь абстрактный интерфейс с одним типом аргумента
например.

class ISerialisable
{
virtual void serialise(capnp::AnyPointer::Builder& any) = 0;
}

class MyTestObject: public ISerialisable
{
void serialise(capnp::AnyPointer::Builder& any) override
{
auto testObjBuilder = any.getAs<TestObject>(); or should initAs be used?
testObject.setValue1( whatever1);
testObject.setValue2( whatever2);
}
}

Можно ли пойти по этому маршруту?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …