PDA

View Full Version : رخ دادن خطا با اضافه کردن یک تابع برای نمایش رشته



ProgramYL
یک شنبه 15 تیر 1393, 17:36 عصر
سلام. وقتی تابع displayMessage در کلاس را در تابع main اجرا می کنم برنامه کامپایل نمیشه.
اما وقتی نوع void در تابع displayMessage را به string تغییر میدم (به نظرم این کار اشتباهه چون return نمیشه) برنامه فقط تا خط displayMessage اجرا میشه و ویندوز ارور میده و برنامه قطع میشه.

#include <iostream>
#include <string>
using namespace std;

class Gradebook
{
public:
Gradebook(string name, string tname)
{
setCourseName(name);
setTeacherName(tname);
}

void setCourseName(string name)
{
if (name.length() <= 25)
courseName=name;

if (name.length() > 25)
{
courseName=name.substr(0,25);
cout << "Name \"" << name << "\" excees maximum length (25). Limiting courseName to first 25 characters:\n" << endl;
}
}

string getCourseName()
{
return courseName;
}

void setTeacherName(string tname)
{
teacherName=tname;
}

string getTeacherName()
{
return teacherName;
}

void displayMessage()
{
cout << "Welcome to the grade book for: " << getCourseName();
cout << "This course presented by: " << getTeacherName();
}

private:
string courseName;
string teacherName;
};


int main()
{
Gradebook myGradebook1("CS101 Introduction to Programming C++","D Book");
Gradebook myGradebook2("CS102 C++ Data Structure","zero");
cout << "myGradebook1 created for course: "
<< myGradebook2.getCourseName()
<< "\nmyGradebook2 created for course: "
<< myGradebook2.getCourseName() << endl;

// modify myGradebook's courseName (with valid-length string)
myGradebook1.setCourseName("CS101 C++ Programming");

cout << "\n\\\\\"courseName\" manually changed to valid-length string:\n"
<< "myGradebook1 created for course: " << myGradebook1.getCourseName()
<< "\nmyGradebook2 created for course: " << myGradebook2.getCourseName()
<< endl;


cout << myGradebook1.displayMessage();
};

hadi0x7c7
یک شنبه 15 تیر 1393, 18:19 عصر
این تغییرات رو بدین برنامه درست کار میکنه:
void displayMessage()
{
cout << "Welcome to the grade book for: " + getCourseName();
cout << "This course presented by: " + getTeacherName();
}

myGradebook1.displayMessage();

ProgramYL
یک شنبه 15 تیر 1393, 19:31 عصر
این تغییرات رو بدین برنامه درست کار میکنه:
void displayMessage()
{
cout << "Welcome to the grade book for: " + getCourseName();
cout << "This course presented by: " + getTeacherName();
}

myGradebook1.displayMessage();


متشکرم. عملگر + چه کاری انجام داد و فرقش با >> چی بود؟ چرا باید + میکردیم؟
به نظرم این کتابی که مطالعه می کنم، بخش تمریناتش، سوالاتی رو می خواد کدش رو بنویسم که هنوز درموردش توضیح نداده! (دیتل) آیا راهی داشت که کد رو طوری تغییر میدادید که غیر از عملگرهای موجود در کد، خطا برطرف بشه؟ نمی دونم.. مثلا با دستکاری شئ ها، آرگومان ها یا چیز دیگه؟