Конструктор класса
- Войдите на сайт для отправки комментариев
Втр, 19/02/2019 - 19:24
Всем доброго времени суток. Вот пытаюсь изучать ОПП и решил создать библиотеку для совей китайской машинки, но как всегда что-то пошло не так. У меня вылезает проблемы с конструктором: no matching function for call to 'Car::Car(int, int, int, int, int, int)'. Как я задаю конструктор:
Car car(1,2,3,4,5,6);
Это мой класс из файла с разширением ".h"
class Car {
public:
Car(uint8_t PIN1, uint8_t PIN2, uint8_t PIN3, uint8_t PIN4, uint8_t PINA, uint8_t PINB); // конструктор
void Advance();
void Back();
void Right();
void Left();
void SetSpeed(uint8_t Speed);
private:
uint8_t IN1;
uint8_t IN2;
uint8_t IN3;
uint8_t IN4;
uint8_t ENA;
uint8_t ENB;
};
А это код из файла с разширением "срр", вставлю только конструктор
Car :: Car(uint8_t PIN1, uint8_t PIN2, uint8_t PIN3, uint8_t PIN4, uint8_t PINA, uint8_t PINB) {
IN1 = PIN1;
IN2 = PIN2;
IN3 = PIN3;
IN4 = PIN4;
ENA = PINA;
ENB = PINB;
}
Расчитываю на вашу мудрость, заранее благодарю.
Полагаю, что поможет создание функции конструктора с параметрами типа int, из которого будет вызываться существующая функция конструктора с параметрами типа uint8_t.
Мда. А вопросов будет еще вагон и маленькая тележка. Классы это еще не ООП, а так же вы банально не умеете составлять библиотеки.http://arduino.ru/Hacking/LibraryTutorial
Я кстати по этому примеру делал, только с arduino.cc . А проблема была совсем в другом он не воспринимал переменные с названием PIN1,PIN2..., а вот переменные a,b,c... он сразу "понял"
Ок!
Не ок
и почему так?
Попробуйте обходится без написания библиотек, пока не научитесь писать классы без ошибок.
/**/ class Cl_Car { protected: uint8_t in1pin; uint8_t in2pin; uint8_t in3pin; uint8_t in4pin; uint8_t ENApin; uint8_t ENBpin; public: Cl_Car(uint8_t Pin1, uint8_t Pin2, uint8_t Pin3, uint8_t Pin4, uint8_t PinA, uint8_t PinB); // конструктор void Advance(); void Back(); void Right(); void Left(); void SetSpeed(uint8_t Speed); }; Cl_Car::Cl_Car(uint8_t p1, uint8_t p2, uint8_t p3, uint8_t p4, uint8_t eA, uint8_t eB) : in1pin(p1), in2pin(p2), in3pin(p3), in4pin(p4), ENApin(eA), ENBpin(eB) {} void Cl_Car::Advance() {} void Cl_Car::Back() {} void Cl_Car::Right() {} void Cl_Car::Left() {} void Cl_Car::SetSpeed(uint8_t Speed) { } Cl_Car Car(/*in1*/2,/*in2*/3,/*in3*/4,/*in5*/5,/*enA*/6,/*enB*/7); //---------------------------------- void setup() { Car.Advance(); } void loop() { }Я кстати по этому примеру делал, только с arduino.cc . А проблема была совсем в другом он не воспринимал переменные с названием PIN1,PIN2..., а вот переменные a,b,c... он сразу "понял"
Оказывается, что не только Вам нравятся такие имена, но и создателям платформы Arduino: