我们正在使用Ubuntu 12.04LTS和ROS环境中的Eclipse进行C ++项目。 我曾经在源文件中定义类,并跳过原型;但现在我们已被告知使用头文件作为原型,并将源文件作为其原型包含在头文件中的函数的扩展。它旨在实现易于阅读的代码。
但是,我在返回结构类型方面遇到了问题,而以前的工作方式没问题。让我清楚地说明我正在努力实现的目标,
这是头文件,
class Im_Robot
{
public:
Im_Robot();
private:
typedef struct
{
double d_kp1;
double d_ki1;
double d_kd1;
double d_kp2;
double d_ki2;
double d_kd2;
} ANGULAR_PARAMS;
ANGULAR_PARAMS angular_params;
protected:
void SetAngularParams(double d_kp1, double d_ki1,double d_kd1, double d_kp2,double d_ki2,double d_kd2);
ANGULAR_PARAMS GetAngularParams();
......
这是源文件,
void Im_Robot::SetAngularParams(double d_kp1,
double d_ki1,
double d_kd1,
double d_kp2,
double d_ki2,
double d_kd2)
{
// this, örneği çıkarılan objeyi temsil eden anahtar kelimedir.
this->angular_params.d_kp1 = d_kp1;
this->angular_params.d_ki1 = d_ki1;
this->angular_params.d_kd1 = d_kd1;
this->angular_params.d_kp2 = d_kp2;
this->angular_params.d_ki2 = d_ki2;
this->angular_params.d_kd2 = d_kd2;
}
ANGULAR_PARAMS Im_Robot::GetAngularParams()
{
return this->angular_params;
}
......
在源文件和对应的行
中ANGULAR_PARAMS Im_Robot::GetAngularParams()
“无法解析类型ANGULAR_PARAMS。”出现错误。即使我在互联网上搜索过,我也看不到任何可靠的解决方案。任何答案将不胜感激。谢谢你..
答案 0 :(得分:4)
ANGULAR_PARAMS
是一个嵌套类,其作用域是其封闭类。
必须使用完全限定名称:
Im_Robot::ANGULAR_PARAMS Im_Robot::GetAngularParams()
{
return this->angular_params;
}
其他:
typedef
。struct ANGULAR_PARAMS
是ANGULAR_PARAMS
private
类Im_Robot
,GetAngularParams()
是protected
,意味着从Im_Robot
分类可以调用该函数但不能显式使用ANGULAR_PARAMS
名称(请参阅demo)。可以使用auto
来访问返回的实例(请参阅demo和Why can I use auto on a private type?)。