【发布时间】:2021-08-18 13:28:49
【问题描述】:
我在调用另一个类私有范围内创建的对象上的方法时遇到问题。 错误也在底部。它似乎无法识别我的汽车类中的 Motor 变量。
我需要将它们创建为指针吗?还是我在这里缺少其他东西?
这是在 Arduino 项目中使用的。
电机.h:
/*
* Library for turning a motor
* turns forward reverse and stops
*/
#ifndef Motor_h
#define Motor_h
class Motor {
private:
int _fPin;
int _bPin;
public:
Motor();
void init(int fPin, int bPin);
void forward();
void back();
void brake();
};
#endif
汽车.h
#include "Motor.h"
class Car
{
private:
Motor rMotor;
Motor lMotor;
float degPerMs = 4.44;
public:
Car(int forR, int revR, int forL, int revL);
void forward();
void reverse();
//input from -180 to 180
void turn(int angle);
void brake();
};
汽车.cpp;
#include "Car.h"
#include "Motor.h"
#include "Arduino.h"
Car::Car(int forR, int revR, int forL, int revL)
{
rMotor.init(int forR, int revR);
lMotor.init(int forL, int revL);
};
Car::forward()
{
rMotor.forward();
lMotor.forward();
}
Car::reverse()
{
rMotor.back();
lMotor.back();
};
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();
}
};
Car::brake()
{
lMotor.brake();
rMotor.brake();
};
错误
D:\4. Study\Deakin\2nd Year\Trimester 2\SIT217 - Engineering 1 Robotics Project\2. Project\main\Car.cpp: In constructor 'Car::Car(int, int, int, int)':
Car.cpp:7:17: error: expected primary-expression before 'int'
rMotor.init(int forR, int revR);
^~~
Car.cpp:7:27: error: expected primary-expression before 'int'
rMotor.init(int forR, int revR);
^~~
Car.cpp:8:17: error: expected primary-expression before 'int'
lMotor.init(int forL, int revL);
^~~
Car.cpp:8:27: error: expected primary-expression before 'int'
lMotor.init(int forL, int revL);
^~~
exit status 1
expected primary-expression before 'int'
【问题讨论】:
-
调用函数时不包含类型。
rMotor.init(int forR, int revR);应该是rMotor.init(forR, revR); -
成员函数就像其他函数一样,您可以像传递任何其他函数一样传递参数(考虑到您正确调用例如
abs和delay,您似乎知道该怎么做) .
标签: c++ class compiler-errors populate