ProgramYL
یک شنبه 15 تیر 1393, 18: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();
};
اما وقتی نوع 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();
};