PDA

View Full Version : سوالی در مورد کلاس ها



Arashdn
جمعه 29 دی 1391, 13:24 عصر
سلام دوستان
چطور میشه در یه کلاس یه تابعی ساخت که آرگومانش یه شی از همون کلاس باشه؟
یعنی مثلا یه کلاس به اسم a داریم
میخوایم داخل خود کلاس یه تابع به اسم func بسازیم که آرگومانش یه شی از همین کلاس هست
راهی هست؟
ممنون

omidshaman
جمعه 29 دی 1391, 14:02 عصر
چرا می خوای یک همچین کاری بکنی؟!
خوب از شی توی func استفاده کن دیگه نیاز به فرستادن نیست که!

pouyan.hosseini
جمعه 29 دی 1391, 14:17 عصر
class ANewType
{
void function(ANewType object) {
// ---
}

void function(ANewType& object) {
// object passed by reference
}
};

Arashdn
جمعه 29 دی 1391, 14:47 عصر
چرا می خوای یک همچین کاری بکنی؟!
خوب از شی توی func استفاده کن دیگه نیاز به فرستادن نیست که!
میخوام اطلاعات رو روی فایل ذخیره کنم که چون random access هست نیاز به کل شی داره نه تک تک دیتاممبر هاش



class ANewType
{
void function(ANewType object) {
// ---
}

void function(ANewType& object) {
// object passed by reference
}
};

ممنون از شما ، فکر نمیکردم به همین سادگی باشه

Arashdn
شنبه 30 دی 1391, 12:22 عصر
الان من یه همچین چیزی دارم
class Client
{
//data members and other parts removed
int update(Client & myClient)
{
ifstream input;
input.open("test.dat" , ios::binary );
if( input.fail() )
{
return 1 ;
}

input.read( (char *) &myClient , sizeof(myClient));
input.close();

return 0;
}
};

و اینطوری هم تابع مو احضار میکنم
//Thats how I use the function:
Client myClient();.
myClient.update(myClient);

ولی موقع اجرا ارور زیر رو میگیرم
Unhandled exception at 0x5adfab2a (mfc100ud.dll) in MyProject.exe: 0xC0000005: Access violation writing location 0x039708fc.
(برنامه 1رو بر نمیگردونه پس میتونیم بفهمیم مشکلی در باز کردن فایل نبوده ..)
ممکنه ایراد به خاطر این باشه که از MFC استفاده میکنم؟