PDA

View Full Version : مشکل در باراضافی دادن به عملگرها



mr_esmaily
شنبه 18 تیر 1384, 12:25 عصر
سلام
من یک کلاس بصورت زیر تعریف کردم:

[code]class xString
{
private :
static const int MAX=10;
char str[MAX];

public :

xString(){}

xString (char Str[])
{
if(strlen(Str) < MAX)
strcpy(str,Str);
else
{
cout << "Error : Overflow" << endl;
strcpy(str,"");
}
}

xString operator+(xString right)
{
xString temp;

if(strlen(str) + strlen(right.str) < MAX)
{
strcpy(temp.str,"");
strcat(temp.str,str);
strcat(temp.str,right.str);
}
else
{
cout << "Error : Overflow" << endl;
strcpy(temp.str,"");
}

return temp;
}

xString operator+(char Str[])
{
xString temp;

if(strlen(str) + strlen(Str) < MAX)
{
strcpy(temp.str,"");
strcat(temp.str,str);
strcat(temp.str,Str);
}
else
{
cout << "Error : Overflow" << endl;
strcpy(temp.str,"");
}

return temp;
}

void DisPlay()
{
if(strcmp(str,""))
cout << str << endl;
else
cout << "Error : xString Is NULL." << endl;
}
};[\code]

در تابع main()هم بصورت زیر تعریف و استفادش کردم :

[code]void main()
{
xString str1("Hello"),str2(" World!"),str3;

str3=str1 + str2;
str3.DisPlay();
str3=str1 + str2;
str3.DisPlay();
}[\code]

چجوری میشه عملگر + رو باراضافی داد که بتوان در تابع ()main از دستور زیر استفاده کرد :

[code]str3="GOOD." + str3;[\code]

tak_savar7
یک شنبه 19 تیر 1384, 11:22 صبح
#include<iostream.h>
#include<conio.h>

const int MAX=20;

class xString{
friend xString operator+(xString , xString );
public :
void operator+(char []);
xString(){};
xString(char []);
void DisPlay();
private :
char str[MAX];
};
//constructor--------------
xString::xString(char Str[])
{
if(strlen(Str) < MAX)
strcpy(str,Str);
else
{
cout << "Error : Overflow" << endl;
strcpy(str,"");
}
}
//--------------------
xString operator+(xString left,xString right)
{
xString temp;

if((strlen(left.str) + strlen(right.str)) < MAX)
{
strcat(left.str,right.str);
strcpy(temp.str,left.str);
}
else
{
cout << "Error : Overflow" << endl;
strcpy(temp.str,"");
}

return temp;
}
//------------------------
void xString::DisPlay()
{
if(strcmp(str,""))
cout<< str <<endl;
else
cout<< "Error : xString Is NULL." <<endl;
}
//----------------------------
void xString::operator+(char Str[])
{
if(strlen(str) + strlen(Str) < MAX)
strcat(str,Str);
else
cout << "Error : Overflow" << endl;
}
//------------------------------
void main()
{
xString str1("Hello"),str2(" World!"),str3;

str3=str1+str2;
str3.DisPlay();

str3+" GOOD";
str3.DisPlay();

getch();
}

mr_esmaily
یک شنبه 19 تیر 1384, 13:12 عصر
سلام
نشد.
منظور من این بود که یک رشته با یک شی از نوع xString جمع و مقدار کل برگشت کند.
درست مانند دستور زیر :
;str2 = "GOOD" + str1