Witam,
Zaczynam przerabiać moje programy na C++. Używam kompilatora avr-g++ z następującymi parametrami:
-Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -Weffc++ -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega16 -DF_CPU=1000000UL
Są to standardowe ustawienia wtyczki AVRowej w eclipsie.
Tworzę taką oto najprostszą klasę z destruktorem wirtualnym:
Definicja konstr i destruktura w pliku .cpp wygląda tak:
Program sklada się z 3 plików: 2 powyższych
oraz pliku main.cpp, w którym jest sama fcja main() ktora jedyne co robi to zwraca 1.
I teraz na etapie linkera mam taki błąd:
Jeżeli usunę słówko virtual wszystko kompiluje i linkuje się bez zająknięcia. Proszę zorientowanych o informację o co chodzi?
Druga sprawa, znalazłem informację , że "-Weffc++" powinien ostrzegać o braku virtualnego destruktora... cóż nie u mnie :/ Nawet się nie zająknął.
Zaczynam przerabiać moje programy na C++. Używam kompilatora avr-g++ z następującymi parametrami:
-Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -Weffc++ -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega16 -DF_CPU=1000000UL
Są to standardowe ustawienia wtyczki AVRowej w eclipsie.
Tworzę taką oto najprostszą klasę z destruktorem wirtualnym:
//mm.h
#ifndef MM_H_
#define MM_H_
class A
{
public:
A();
virtual ~A();
};
#endif /* MM_H_ */
Definicja konstr i destruktura w pliku .cpp wygląda tak:
//mm.cpp
#include "mm.h"
A::A()
{
}
A::~A()
{
}
Program sklada się z 3 plików: 2 powyższych
oraz pliku main.cpp, w którym jest sama fcja main() ktora jedyne co robi to zwraca 1.
I teraz na etapie linkera mam taki błąd:
./mm.o: In function `A::~A()':
../mm.cpp:10: undefined reference to `operator delete(void*)'Jeżeli usunę słówko virtual wszystko kompiluje i linkuje się bez zająknięcia. Proszę zorientowanych o informację o co chodzi?
Druga sprawa, znalazłem informację , że "-Weffc++" powinien ostrzegać o braku virtualnego destruktora... cóż nie u mnie :/ Nawet się nie zająknął.
