-
مشكل اين كد چيه؟
کد:
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
String(const char *);
char * GetString() const { return itsString; }
int GetLen() const { return itsLen; }
friend ostream & operator<<(ostream &,String &);
private:
int itsLen;
char * itsString;
};
String::String(const char * cString)
{
itsLen = strlen(cString);
itsString = new char[itsLen+1];
for(int i=0;i<itsLen;i++)
itsString[i] = cString[i];
itsString[itsLen] = '\0';
}
ostream & operator<< (ostream & theOstream,String & theString)
{
theOstream<<theString.GetString();
return theOstream;
}
int main()
{
String MHD("ooak!!");
cout <<MHD<<endl;
return 0;
}
-
کدش کار می کنه که! اگه منظورت اینه که چرا هیچی نشون نمیده، قبل از خط return 0 خط زیر رو تو main اضافه کن:
که باعث می شه قبل از خروج از برنامه منتظر زده شدن یه کلید بمونه. اگه جای خاصیش به نظرت مشکل داره بگو همونجا رو بررسی کنم. ممنون.
-
نقل قول:
کد:
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
String(const char *);
char * GetString() const { return itsString; }
int GetLen() const { return itsLen; }
friend ostream & operator<<(ostream &,String &);
private:
int itsLen;
char * itsString;
};
String::String(const char * cString)
{
itsLen = strlen(cString);
itsString = new char[itsLen+1];
for(int i=0;i<itsLen;i++)
itsString[i] = cString[i];
itsString[itsLen] = '\0';
}
ostream & operator<< (ostream & theOstream,String & theString)
{
theOstream<<theString.GetString();
return theOstream;
}
int main()
{
String MHD("ooak!!");
cout <<MHD<<endl;
return 0;
}
باسلام،
شما بايد از متد مشخص شي تعريف شده از كلاس String استفاده كني تا تعريف cout صريح گردد.برنامه ات بصورت زير تغيير مي كند:
کد:
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
String(const char *);
char * GetString() const { return itsString; }
int GetLen() const { return itsLen; }
friend ostream & operator<<(ostream &,String &);
private:
int itsLen;
char * itsString;
};
String::String(const char * cString)
{
itsLen = strlen(cString);
itsString = new char[itsLen+1];
for(int i=0;i<itsLen;i++)
itsString[i] = cString[i];
itsString[itsLen] = '\0';
}
ostream & operator<< (ostream & theOstream,String & theString)
{
theOstream<<theString.GetString();
return theOstream;
}
int main()
{
String MHD("ooak!!");
cout <<MHD.GetString()<<endl;
return 0;
}
موفق باشيد.
-
مشكل(مشكلات) اين چيه؟
آقاي holmz از جواب سودمندتان متشكرم
دوستان اگه ميشه مشكلات اين كد رو بگيد
کد:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
ostream & operator <<(const ostream & os,const Student & lee)
class Student
{
public:
Student();
Student(const string&,const int);
Student(const Student &);
~Student(){}
Student & operator = (const Student &);
void SetName(string name);
void SetAge(int);
int GetAge() const { return itsAge; }
string GetName() const { return itsName; }
private:
int itsAge;
string itsName;
};
Student::Student():
itsName("NEW STUDENT"),
itsAge(16)
{}
Student::Student(const string & name,const int age):
itsName(name),
itsAge(age)
{}
Student::Student(const Student & mahdi):
itsName(mahdi.GetName()),
itsAge(mahdi.GetAge())
{}
Student & Student::operator =(const Student & rhs)
{
itsAge = rhs.GetAge();
itsName = rhs.GetName();
return * this;
}
void Student::SetAge(int age)
{
itsAge = age;
}
void Student::SetName(string name)
{
itsName = name;
}
template <class T>
void ShowVector(const vector<T> &);
int main()
{
Student A;
Student B("B",17);
Student C("C",18);
Student D("D",15);
vector<Student> EmptyClass;
cout <<"emotyClass\n";
ShowVector(EmptyClass);
vector<Student> GrowingClass(3);
cout <<"GrowingClass\n";
ShowVector(GrowingClass);
GrowingClass[0] = A;
GrowingClass[1] = B;
GrowingClass[2] = C;
cout <<"GrowingClass(3)\n";
ShowVector(GrowingClass);
GrowingClass.push_back(BruceLee);
cout <<"GrowingClass(Bruce Lee)\n";
ShowVector(GrowingClass);
GrowingClass[0].SetName("B");
GrowingClass[0].SetAge(15.5);
cout <<"end of file\n";
ShowVector(GrowingClass);
return 0;
}
ostream & operator <<(const ostream & os,const Student & lee)
{
os <<lee.GetName()<<" is "<<lee.GetAge()<<" years old\n";
return os;
}
void ShowVector(const vector<T> & v)
{
cout <<"max_size :"<<v.max_size()<<endl;
cout <<"size :"<<v.size()<<endl;
cout <<"capacity :"<<v.capacity()<<endl;
cout <<"empty :"<<v.empty() ? "empty" : "not empty"<<endl;
for(int i-0;i<v.size();i++)
cout <<v[i]<<endl;
cout <<endl;
}