You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++类内嵌套其他类对象调用方法报错(Arduino项目)

问题修复方案

错误根源

  • 编译报错不需要把Motor对象定义为指针,核心问题是你在调用Motor::init方法时,错误地给传入的参数添加了int类型声明。调用普通函数传递参数时,不需要重复声明参数的类型,只有在函数定义、函数声明阶段才需要标注参数类型。
  • 另外你代码中Car类的所有成员函数实现都遗漏了返回值声明,也会导致后续编译报错。

修复步骤

1. 修复Car构造函数内的init调用

打开Car.cpp,将构造函数的代码修改为如下内容:

Car::Car(int forR, int revR, int forL, int revL)
{
    // 传参去掉int类型前缀,直接传入变量即可
    rMotor.init(forR, revR);
    lMotor.init(forL, revL);
}

2. 补全所有Car成员函数的返回值

你当前的成员函数实现都漏了void返回值,和类声明里的定义保持一致即可,修改后的成员函数代码如下:

void Car::forward()
{
    rMotor.forward();
    lMotor.forward();
}

void Car::reverse()
{
    rMotor.back();
    lMotor.back();
}

void Car::turn(int angle)
{
    float onTime = abs(angle) * degPerMs;
    if (angle < 0)
    {
        rMotor.forward();
        lMotor.back();
        delay(onTime);
        rMotor.brake();
        lMotor.brake();
    }
    else
    {
        lMotor.forward();
        rMotor.back();
        delay(onTime);
        rMotor.brake();
        lMotor.brake();
    }
}

void Car::brake()
{
    lMotor.brake();
    rMotor.brake();
}

内容的提问来源于stack exchange,提问作者Mitchell Day

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:36:00