所以我有一个问题要解决几个小时。关于SO的问题有很多,抱怨同样的问题,但是没有解决方案对我有用。
我有2个结构
// \brief The state of a single joint position. Default value of the speed is the maximum it wil allow.
struct JointPosition
{
/// \brief The degree to set the joint to.
double degree = 0;
/// \brief The max degrees per second it will allow during the move.
double maxDegreesPerSecond = 0;
};
/// \brief Struct containing all joint positions as degrees.
struct JointPositions
{
JointPosition base;
JointPosition shoulder;
JointPosition elbow;
JointPosition wrist;
JointPosition gripper;
JointPosition wristRotate;
};
我想像这样初始化它们:
static const JointPositions pos = {
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0}
};
return pos;
但是当我这样做时,我的编译器会抱怨以下错误:
RobotArm.cpp:59:2: error: could not convert ‘{0, 0}’ from ‘<brace-enclosed initializer list>’ to ‘JointPosition’
只要Afaik括号初始化程序没有构造函数,它们就可以使用它们。
我在gcc 7.3中使用c++ 11。
任何帮助表示赞赏。
这是一个在线链接,演示了此问题:
https://onlinegdb.com/HkKzwoLhb
最佳答案
问题是您使用的C++版本。
在此Live Demo中,我可以重现GCC 7.2.0和C++ 11的问题。
切换到C++ 14可立即修复错误。