在Eclipse中无法用C++解析结构类型

Struct Type Could Not Be Resolved C++ in Eclipse

本文关键字:结构 类型 C++ Eclipse      更新时间:2023-10-16

我们在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。"出现错误。尽管我在网上搜索过,但还是找不到任何可靠的解决方案。任何答复都将不胜感激。已经谢谢了。。

ANGULAR_PARAMS是一个嵌套类,其作用域是它的封闭类。必须使用完全限定的名称:

Im_Robot::ANGULAR_PARAMS Im_Robot::GetAngularParams()
{
    return this->angular_params;
}

其他:

  • typedef在C++中是不需要的,只需使用struct ANGULAR_PARAMS即可
  • 访问说明符不一致,因为ANGULAR_PARAMSIm_Robotprivate类,而GetAngularParams()protected,这意味着从Im_Robot派生的类可以调用函数,但不能显式使用ANGULAR_PARAMS名称(请参阅演示)。不过,可以使用auto来访问返回的实例(请参阅演示和为什么我可以在私有类型上使用auto?)