<分区>
我正在尝试使用 C++ SDK 来控制 Dynamixel 电机,如果可能的话,我想从一个类中进行操作。我需要两个指向一个对象的指针和另一个对象作为类成员变量。我找到了 How can I initialize C++ object member variables in the constructor?但是虽然它讨论了指向对象的指针和对象本身,但我需要一个组合。我需要的三个成员如下所示(取自示例代码):
dynamixel::PortHandler *portHandler = dynamixel::PortHandler::getPortHandler(DEVICENAME);
dynamixel::PacketHandler *packetHandler = dynamixel::PacketHandler::getPacketHandler(PROTOCOL_VERSION);
dynamixel::GroupSyncWrite groupSyncWrite(portHandler, packetHandler, ADDR_MX_GOAL_POSITION, LEN_MX_GOAL_POSITION);
问题是 GroupSyncWrite 对象依赖于它上面的指针并且必须在前两个指针之后声明,所以像这样:
Foo::Foo() : groupSyncWrite(...)
{
porthandler = dynamixel::PortHandler::getPortHandler(DEVICENAME);
packetHandler = dynamixel::PacketHandler::getPacketHandler(PROTOCOL_VERSION);
}
似乎不起作用,因为 groupSyncWrite 构造函数将 porthandler 和 packethandler 作为参数。
如果有人知道如何做到这一点,或者如果无法像这样实现它,我将不胜感激。
编辑:
简而言之,问题是在同一个构造函数中初始化对象之前,如何在构造函数中初始化两个对象指针。
有一个对象foo需要两个指向对象的指针作为参数,bar *one和baz *two。对象和指针都是我类的成员,需要在类的构造函数中初始化。问题是我不知道如何初始化格式中的指针
Class::Class() : one() {}
例如可以用非指针对象来完成。 @Matthieu的回答非常有效。