PDA

View Full Version : چرا این برنامه کامپایل نمی شود ؟



asd232323
پنج شنبه 14 اردیبهشت 1391, 13:10 عصر
باسلام خدمت استادان محترم لطفا راهنمایی کنید
#include <string.h>

class GradeBook{
public:

GradeBook(string);
void setCoursName(string);
string getCoursName();
void display();

private:
string coursName;
};
save :GradeBook.h
//-------------------------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include "GradeBook.h"

GradeBook::GradeBook(string name){
set(name);
}
//--------------------
void GradeBook::setCoursName(string name){
coursName=name;}
//--------------------
string GradeBook::getCoursName(){
return coursName;}
//--------------------------
void GradeBook::display(){
cout<<getCoursName()<<endl;
}
save:gradeBook.cpp
-------------------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include "GradeBook.h"

int main(int argc, char* argv[]){
GradeBook e("welcom to c++");
cout<<e.getCoursName();
cout<<e.display();

getch();
clrscr();
return 0;
}
save:main.cpp

file *.h---------------------درپوشه include قراردادم
دو فایل دیگه دردسکتاپ هستندمی خواستم بدونم
چرا کامپایل نمیشن مثال کتاب دایتل هست ؟

one hacker alone
پنج شنبه 14 اردیبهشت 1391, 18:00 عصر
سلام
اول اینکه برای گذاشتن کد توی انجمن ها از تگ های کد استفاده کن که در قسمت نوار ابزار قسمتی که داری مطلب رو مینویسی بزار
دوم اینکه کد ها اگه مربوط به چند فایل هستن جوری مشخص کن که طرف مقابل متوجه بشه چون شما الان وسط کد ----- اینو زدین حالا خوب این اگه جزء کد باشه کامپایلر ایراد میگیره
سوم اینکه خطاهای کامپایلر رو هم بزارید زودتر میشه به جواب رسید

asd232323
شنبه 16 اردیبهشت 1391, 10:27 صبح
باسلام مجدد
ارور مورد نظر اینه
[Linker Error] Unresolved external 'Grade::Grade(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >)' referenced from I:\DESKTOP\USER\MAIN.OBJ
[Linker Error] Unresolved external 'Grade::get()' referenced from I:\DESKTOP\USER\MAIN.OBJ

asd232323
شنبه 16 اردیبهشت 1391, 21:08 عصر
سلام
کسی نیست جواب ما رو بده

Ananas
یک شنبه 17 اردیبهشت 1391, 00:44 صبح
سلام.
روی دسکتاپ سیو نکن بریز تو یه پوشه یه جای دیگه. کدها رو هم توی سایت بین تگ C++‎ بگذار تا بهتر بشه خوند. اروری که شما اینجا گذاشتی مربوط به کامپایل نیست بعد از کامپایل برای لینک کردن احتمالا چیزی رو پیدا نمیکنه. کد شما رو کپی کردم تو همون فایلایی که نوشتی ولی تو قسمت تابع main برای خطی که از cout استفاده کردی ارور داد. بعد از اون تابع set نداری که احتمالا منظورت استفاده از تابع setCoursName بوده.
کد اصلاح شده :
فایل GradeBook.cpp :

#include <iostream.h>
#include <conio.h>

#include "GradeBook.h"

GradeBook::GradeBook(string name) {
setCoursName(name);
}

// --------------------
void GradeBook::setCoursName(string name) {
coursName = name;
}

// --------------------
string GradeBook::getCoursName() {
return coursName;
}

// --------------------------
void GradeBook::display() {
cout << &getCoursName()[0] << endl;
}

فایل file1.cpp :

#include <iostream.h>
#include <conio.h>
#include "GradeBook.h"

int main(int argc, char* argv[]) {
GradeBook e("welcom to C++‎");
cout << &(e.getCoursName()[0]) << "\n";
e.display();

getch();
clrscr();
return 0;
}

asd232323
چهارشنبه 20 اردیبهشت 1391, 10:25 صبح
سلام
من همه این کارهایی که شما گفتید انجام دادم ولی مشکل حل نشد لطفا راهنمایی کنید

Ananas
چهارشنبه 20 اردیبهشت 1391, 12:26 عصر
برای من درست کار کرد. ببین بعضی وقتا که نوشته هات خطا داشته باشه موقع کامپایل و ساختن فایلای obj و این جور چیزا یه مسیر غلطی رو میره که بعد از اصلاح کد دوباره اصلاحش نمیکنه و موقع کامپایل مجدد دوباره ادامه ی همونو میره که با خطای قبلی همراهه. حالا شما فایلای اضافه رو پاک کن و بگذار دوباره از اول اول کامپایل کنه شاید فرق کنه. تو قسمتی که کامپایل یا بیلد رو انجام میده باید یه چیزی مثل clean داشته باشه که خودش این کار (پاک کردن فایلا) رو انجام میده یا خودت دستی فایلای اضافه رو پاک کن و یا اینکه فایل های .h و .cpp ای که نوشتی کپی کنی تو یه پروژه دیگه که تازه ساختی بعد کامپایل کن.