Другие языки программирования и технологии

Не работает конструктор в коде C++!

Компилятор от среды разработки Ардуино 1.8.5.
Ошибка в объявлении новой переменной типа «motors»:

struct {
struct motors {
Servo motor;
byte currentAngle;
byte centerAngle;
motors(byte centerAngle_) {
centerAngle = centerAngle_;
};
};
motors horizontal(78); //ошибка!
} servo;

Если вынести содержимое объекта «servo» за его пределы, то всё заработает. Код намного сложнее, я упростил для понимания, но от этого ошибка, разумеется, не пропала. Вот её текст:
exit status 1
expected identifier before numeric constant
ЧА
Чг Ауп
271
Похоже на си обычный у тебя

struct {
// тут структура одна и не должна содержать описание класса motors
} servo;

// а далее описание класса идет
struct motors
{
Servo motor;
byte currentAngle;
byte centerAngle;

motors(byte centerAngle_) {
centerAngle = centerAngle_;
};
};

Возможно надо применить указатели на структуры, а то у тебя выходит структура которая содержит другую структуру да еще внутри содержит саму себя (Servo motor) без предварительного описания struct servo;

Короче, лучше начать с изучения языка си для начала и си++ если нужны классы.

struct {

struct motors {
Servo motor;
byte currentAngle;
byte centerAngle;
};

motors horizontal; //это работает!
{КОНЕЧНО РАБОТАЕТ, ТАК КАК motors объявлен и виден в struct {} servo }
} servo;

НО

struct {

struct motors {
Servo motor;
byte currentAngle;
byte centerAngle;
motors(byte centerAngle_) {
centerAngle = centerAngle_;
};
{ motors объявлен тут и уже ниже после }; не будет виден и доступен }
};

motors horizontal(78); //ошибка!
Эдик Рустамов
Эдик Рустамов
50 738
Лучший ответ
Чг Ауп Вам ли не знать, что Си чувствителен к регистру и Servo ≠ servo…
Ошибка, при переустановки!
Infik.85
Infik.85
82 412
Четкий Ahiska..... лишь бы ляпнуть. Как тут один Поболь
Хз как ардуиновская среда определяет класс Servo. Вполне возможно, что эти объекты должны создаваться как внешние переменные и дополнительно инициализироваться средой ардуино при старте программы. Т. е. иметь их в качестве полей - возможно - запрещено.
C++11

struct {
struct motors {
Servo motor;
byte currentAngle;
byte centerAngle;
motors(byte centerAngle_) {
centerAngle = centerAngle_;
};
};
motors horizontal = 32;
}servo;

https://stackoverflow.com/questions/16224746/how-to-use-c11-to-program-the-arduino
господь, какой это класс?
Макс Кир
Макс Кир
323
народ научите и меня программированию прошууу
Александр Холодков ок учу напиши в Youtube C# Вот его и учи по видео урокам