Используя Teensy 3.2, моя программа висит в разделе, указанном ниже. Я не знаю как получить доступ glyph
, Я могу видеть все строки, напечатанные на моем серийном мониторе Arduino, если закомментирую //hangs here
линия.
#include <vector>
#include <Arduino.h>
class Letter {
public:
String glyph = "a";
};
class Language {
public:
Language();
std::vector <Letter> alphabet;
};
Language::Language(){
std::vector <Letter> alphabet;
Letter symbol = Letter();
alphabet.push_back(symbol);
delay(2000);
Serial.println("hello world");//prints in the arduino monitor
Serial.println(this->alphabet[0].glyph);//hangs here
Serial.println("line of interest executed");//runs only if line above is commented out
}
void setup() {
Serial.begin(9600);
Language english = Language();
}
void loop() {
}
Вы определяете локальную переменную alphabet
а также push_back
один элемент в это. Это не имеет ничего общего с переменной-членом alphabet
, затем this->alphabet[0].glyph
приводит к UB, переменная-член alphabet
все еще пусто
Вы могли бы хотеть
Language::Language() {
Letter symbol = Letter();
this->alphabet.push_back(symbol);
// or just alphabet.push_back(symbol);
delay(2000);
Serial.println("hello world");//prints in the arduino monitor
Serial.println(this->alphabet[0].glyph);
Serial.println("line of interest executed");
}
Других решений пока нет …