【问题标题】:Struct Type Could Not Be Resolved C++ in EclipseEclipse 中的 C++ 无法解析结构类型
【发布时间】:2013-07-03 15:24:05
【问题描述】:

我们在 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。”出现错误。即使我在互联网上搜索过它,我也无法看到任何可靠的解决方案。任何答案将不胜感激。已经谢谢了..

【问题讨论】:

  • 已解决,请回答,以便我选择您的答案

标签: c++ eclipse struct return eclipse-cdt


【解决方案1】:

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 名称明确(见demo)。不过,可以使用auto 来访问返回的实例(请参阅demoWhy can I use auto on a private type?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2016-04-03
    • 2012-05-27
    • 2019-08-06
    • 2014-11-10
    相关资源
    最近更新 更多