【发布时间】:2019-01-15 16:17:36
【问题描述】:
我是 CAP'N PROTO 的新手。我已经创建了 cap'n proto 结构和下面提到的结构的一部分:
**struct InjectorRequestMsg {
dataFrame @0: InjectorDataFrame;
injectorRequestID @1: UInt32;
injectorID @2: UInt32;
injectorScriptPath @3: Text;
injectorFuncName @4: Text;
injectorLogPath @5: Text;
}**
然后,我在我的 C++ 代码中编写一个构建器,如下所示:::capnp::MallocMessageBuilder message;
InjectorRequestMsg::Builder injectorRequestMsg = message.initRoot<InjectorRequestMsg>();
然后,后续分配也可以正常工作,我可以设置所有值。
但是,当我尝试像 InjectorRequestMsg::Builder injectorRequestMsg;
injectorRequestMsg = message.initRoot<InjectorRequestMsg>();
然后,它给出以下错误: capnproto/InjectorMessage.capnp.h:197:3:错误:在此处声明 建造者()=删除; // 删除以阻止不正确的使用。
因此,请您帮助我了解如何在两个不同的步骤中声明和初始化 InjectorRequestMsg::Builder injectorRequestMsg,以便我将 InjectorRequestMsg::Builder injectorRequestMsg 作为 C++ 类和所有成员函数的数据成员C++类可以访问吗?
【问题讨论】:
-
从消息中您根本无法分两步完成。我认为您在询问类成员,您不需要在构造函数中使用
injectorRequestMsg = message.initRoot<InjectorRequestMsg>();,请查看member initialisation lists