[C++] undefined reference to '...'
Ostatnio zmodyfikowano 2014-11-20 10:31
krzych167 Temat założony przez niniejszego użytkownika |
[C++] undefined reference to '...' » 2014-11-20 09:42:44 Witam wszystkich bardzo serdecznie :) Od razu zaznaczę, że jestem dość początkującą osobą w C++ Zmagam się z następującym błędem kompilacji: D:\PROJEKTY\CPP\Student\Student\main.cpp|11|undefined reference to `Student::SetName(std::string)'|a teraz właściwy kod programu: Plik student.h
#include <iostream> #include <string>
#ifndef STUDENT_H #define STUDENT_H
class Student { public: void SetName( std::string input ); private: std::string FirstName; };
#endif
Plik student.cpp #include "Student.h"
void SetName( std::string input ) { std::string FirstName = input; }
Plik main.cpp #include <iostream> #include <string>
#include "student.h"
int main() { Student Marek; Marek.SetName( "AAA" ); return 0; }
Fragmenty kodu oznaczone komentarzem działają bez problemu, natomiast nurtuje mnie pytanie dlaczego funkcja znajdująca się poza ciałem klasy tego samego przypisania już wykonać nie chce... Z góry dziękuję za pomoc... :) |
|
b00rt00s |
» 2014-11-20 10:18:01 zmień: void SetName( std::string input ) { std::string FirstName = input; } na zmień: void Student::SetName( std::string input ) { FirstName = input; } Błąd wynika z tego, że zdefiniowałeś funkcję zewnętrzną, zamiast zdefiniować funkcję składową klasy Student. Kompilator próbuje znaleźć tą definicję i mu się nie udaje. Stąd błąd. |
|
krzych167 Temat założony przez niniejszego użytkownika |
» 2014-11-20 10:23:36 Hmm... tak już też w sumie próbowałem, ale wtedy pojawia się inny błąd w kompilacji :( dokładniej: ||=== Build: Debug in Student (compiler: GNU GCC Compiler) ===| D:\PROJEKTY\CPP\Student\Student\src\student.cpp||In function 'void SetName(std::string)':| D:\PROJEKTY\CPP\Student\Student\src\student.cpp|8|error: 'FirstName' was not declared in this scope| ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
Jakiś inny pomysł co tu dalej nie gra? Dobra, już wszystko gra! :)
Bardzo Ci dziękuję za pomoc :) Powyższy log nie uwzględniał jeszcze w nazwie funkcji tego członu "Student::" Temat uważam za rozwiązany :) |
|
b00rt00s |
» 2014-11-20 10:28:39 void Student::SetName( std::string input ) { FirstName = input; } |
|
krzych167 Temat założony przez niniejszego użytkownika |
» 2014-11-20 10:31:07 Zdążyłem już poprawić w poprzednim poście :) Niemniej bardzo dziękuję, bo strasznie mnie ten błąd nurtował, a po 1000x przeglądania co jest nie tak, nie wpadłem na to, że przecież zdeklarowałem zwykłą funkcję, a nie odnośnik... :)
Dzięki! :) |
|
« 1 » |