Проблема проистекает из абстрактных конструкторов и деструкторов.Когда я удалил все "виртуальные" ключи, все работает нормально:
class FooBar {
public:
char foobar[7] = { 'f','o','o','b','a','r' }; // Should be publically visible
FooBar() {
Serial.println("\nConstructing FooBar");
}
void begin() {
Serial.println("\nFrom FooBar:");
Serial.print("foobar=");
Serial.println(foobar);
}
};
class Foo : public FooBar {
public:
const char foo[4] = { 'f','o','o' };
Foo() {
Serial.println("\nConstructing Foo");
}
void begin() {
Serial.println("\nFrom Foo:");
Serial.print("foo=");
Serial.println(foo);
Serial.print("FooBar=");
Serial.println(FooBar::foobar);
}
};
class Bar : public Foo {
public:
const char bar[4] = { 'b', 'a', 'r' };
Bar() {
Serial.println("\nConstructing Bar");
}
void begin() {
Serial.println("\nFrom Bar:");
Serial.print("bar=");
Serial.println(bar);
Serial.print("foo=");
Serial.println(foo);
Serial.print("FooBar=");
Serial.println(foobar);
}
};
FooBar *foobar;
Foo *foo;
Bar *bar;
void setup() {
Serial.begin(115200);
Serial.println("Beginning...");
foobar = new FooBar();
foo = new Foo();
bar = new Bar();
foobar->begin();
foo->begin();
bar->begin();
}
void loop() {
}