cpp программа зависает при доступе к переменной члена класса

Используя 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() {

}

1

Решение

Вы определяете локальную переменную 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");
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]