دوستان بابت عنوان معذرت واقعا نمی دونستم چجوری به فارسی بگم :دی
من یه برنامه نوشتم ( سادست برای درک کلاس جدا از منبع اصلی ) که متشکل از سه سورس main.cpp GradeBook.cpp GradeBook.h عه و محتویاتش :
GradeBook.h:
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string );
void setCourseName( string );
string getCourseName();
void displayMessage();
private:
string courseName;
};
GradeBook.cpp:
#include <iostream>
#include "/home/salar/Programing/C++/my/g/GradeBook.h"
using namespace std;
GradeBook::GradeBook( string course )
{
setCourseName( course );
}
void GradeBook::setCourseName( string name )
{
courseName = name;
}
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()
{
cout << "Welcome to\n" << getCourseName();
}
main.cpp
#include <iostream>
#include "/home/salar/Programing/C++/my/g/GradeBook.h"
using namespace std;
int main()
{
GradeBook myGrade( "test" );
myGrade.displayMessage();
}
متن ارور در جی پلاس پلاس:
salar@moghaddam:~/Programing/C++/my/g$ g++ main.cpp
/tmp/ccfoZTv8.o: In function `main':
main.cpp:(.text+0x39): undefined reference to `GradeBook::GradeBook(std::string)'
main.cpp:(.text+0x5d): undefined reference to `GradeBook::displayMessage()'
collect2: error: ld returned 1 exit status
مشکل اینجاست که این کد در ویژوال استادیو کامپایل میشه اما در جینی و کدبلاکس (همون کامپایلر جی پلاس پلاس ) کامپایل نمیشه! به وضوح یه مشکلی تو جی پلاس پلاس هست، باید آرگومان خاصی بدم؟ مشکل چیه؟