Dodanie konstruktora/destruktora powoduje undefined reference
Ostatnio zmodyfikowano 2013-06-12 22:02
p4vv37 Temat założony przez niniejszego użytkownika |
Dodanie konstruktora/destruktora powoduje undefined reference » 2013-06-06 13:45:55 Cześć Jestem bardzo początkujący w C++. Staram się nauczyć przeciążania operatorów i klas porządnie. Napisałem prosty program: #include <iostream>
using namespace std;
class Klasa { private: int a; public: Klasa(); virtual ~Klasa(); int operator =( int b ) { this->a = b; } friend ostream & operator <<( ostream & wy, Klasa & kl ); };
ostream & operator <<( ostream & wy, Klasa & kl ) { return wy << kl.a; } int main() { Klasa klasa; klasa = 5; cout << klasa; cout << "Hello world!" << endl; return 0; } Nie widzę w nim błędów, ale po zbudowaniu wyrzuca mi Undefined reference to Klasa:każda metoda z klasy... Po zakomentowaniu kreatora/destruktora program działa... Dlaczego tak jest i co robię źle? |
|
wojownik266 |
» 2013-06-06 13:57:56 Jak na moje oko to musisz dodać zaraz za klasą definicje konstruktora i destruktora i program po tym zabiegu ma działać!! Klasa::Klasa() { } Klasa::~Klasa() { }
|
|
pekfos |
» 2013-06-06 15:28:21 Dlaczego tak jest i co robię źle? |
Dokładnie z tego samego powodu, jak przy zwykłych funkcjach. Nie można wywołać kodu, który nie istnieje. int f();
int main() { f(); } |
|
f651144 |
» 2013-06-08 19:39:34 To co napisał pan wojownik266 może być dla Ciebie nie do końca zrozumiałe. W Twojej konwencji będzie wyglądać to tak: class Klasa { private: int a; public: Klasa() { this->a = 0; } virtual ~Klasa() { cout << "Jestem destruktorem klasy \"Klasa\"" << endl; } int operator =( int b ) { this->a = b; } friend ostream & operator <<( ostream & wy, Klasa & kl ); }; Chociaż moim zdaniem powinieneś raczej zapisać to tak jak zaproponował wojownik266 (dobry nawyk, jeśli kiedyś będziesz chciał napisać bibliotekę). |
|
p4vv37 Temat założony przez niniejszego użytkownika |
» 2013-06-12 22:02:12 Dzięki, zorientowałem się chwilę później jednak..
Głupi błąd. Dzięki za pomoc. |
|
« 1 » |