Hallo,
da mein derzeiiges Projekt etwas Umfangreicher wird, möchte ich es
gerne in C++ programmieren. Dank der neuen Version von mfile klappt das
prinzipiell recht gut mit dem WinARM.
Der Linker erzeugt aber eine Fehlermeldung, sobald eine abstrakte
Basisklasse im Spiel ist:
1 | class A
|
2 | {
|
3 | public:
|
4 | virtual void test() = 0;
|
5 | };
|
6 |
|
7 | class B: public A
|
8 | {
|
9 | public:
|
10 | void test();
|
11 | };
|
12 |
|
13 | void B::test()
|
14 | {
|
15 | }
|
16 |
|
17 | int main()
|
18 | {
|
19 | B hallo;
|
20 | }
|
Die Fehlermeldung lautet:
undefined reference to `__cxa_pure_virtual'
Übersetzt klingt das für mich so, als ob dem Linker die Implementierung
der rein virtuellen Funktion fehlt. Aber natürlich liegt es in der Natur
von rein virtuelen Funktionen, dass diese keine Implementierung haben.
Im Übrigen meldet der C++ Compiler beim kompilieren folgende Warnung:
alignment of 'B::_ZTV1B' is greater than maximum object file
alignment. Using 1
Hat das vielleicht damit etwas zu tun ?
Oder ist soetwas mit avrgcc einfach nicht möglich, wie z.B. auch das
Instanziieren zur Laufzeit mit new ?
Gruß
Stefan