PDA

نسخه کامل مشاهده نسخه کامل : مشكل اين كد چيه؟



mahdi7s
31-07-2008, 12:44
من نتونستم اين كدو كامپايل كنم چون تو خط 29 يه ارور ميده ميشه بگيد مشكلش چيه؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

hajibahmani
31-07-2008, 13:36
امیدوارم بااین کد مشکلت حل شه من تو محیط داس کامپایل کردم ولی یه وارنینگ داره کار باusing namespace std; رو بلد نبودم پاک کردم فکر کنم مشکلی پیش نیاد





برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Mina Mehdizadeh
31-07-2008, 17:07
کدتون هنوز error می ده......میشه کلا درباره برنامتون توضیح بدید اینکه می خواید چیکار کنه ....شاید بتونم کمک کنم

Mina Mehdizadeh
31-07-2008, 17:28
این کد رو ببینید .....همون کاری رو می کنه که می خواید ؟
( من فقط توی کد اصلاح شده دوستمون const روهم برداشتم )

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mahdi7s
01-08-2008, 12:25
من ميگم مشكل كد من چيه كه ارور ميده لطفا رو كد خودم توضيح بدين

Mina Mehdizadeh
01-08-2008, 13:52
اینم کد : ...ببینید درست شد ؟؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mahdi7s
06-08-2008, 20:05
دوستان من از كار شئ operator كه در خطوط 28 تا 32 تعريف شده سر در نميارم ميشه برام واضح توضيح بدين

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

rf.ariyapoor
06-08-2008, 23:26
دوست عزیز operator یه شی نیست

اصلا operator تو این کلاس چیزی نیست

ببینید ++c یه سری داده از پیش تعیین شده داره مثل int , float ,..... که عملگر مثلا ++(یا +یا - یا / و *و....) روی این داده ها تعریف شده و ++n بعنی n رو بعد از پردازش یکی اضافه کن

حالا که شما میای یه کلاس تعریف میکنی .با این کار در واقع داری یه نوع داده جدید به نام کلاستون میسازی بعنی تو برنامه شما یه داده جدید مثل int و..... به نام counter ساخته شده.

حالا عملگرهایی مثل جمع یا تفریق و .... یا همین ++ واسه این نوع داده جدید که شما تعریف کردیش تعریف نشده و برای مثال اگه ما دو object از این کلاس شما به اسم های obj1 و obj2 داشته باشیم obj1+obj2 یا obj1++ معنی نمیده و خطا میگیره

واسه رفع این مشکل ما میایم این عملگر ها رو واسه داده جدیدی که ساختیم تعریف میکنیم

واسه این کار هم باید تو کلاس مربوطه واسه این عملگر یه تابع تعریف کنیم که اصطلاحا به این کار (operator overloading )میگن.

دراین توابع اصولا قبل از عملگر باید کلمه operator بیاد

برای مثال در مورد تابع شما :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیداین تابع در واقع عملکرد ++ رو روی داده counter مشخص میکنه

که ++ روی شی جاری عمل کرده (this) و یه داده از نوع counter که const تعریف شده باز میگردونه

حالا اگر obj1 یه شی از نوع counter باشه ++obj1 به این معنی هست که متغییر itsVal شی جاری رو یکی اضافه کن

abtin5
07-08-2008, 09:24
ميشه يه نفر اينو به c بنويسه ما هم بفهميم؟

اخه من هنوز ++c بلد نيستم.

ممنون.

mahdi7s
07-08-2008, 21:20
دوستان ببخشيد كه دوباره مزاحمتون ميشم راستش من مثل هميشه تو اين كد به مشكل بر خوردم اونم در خطوط 27 تا 32 اگه ميشه كاري كه اين خطوط(27 تا 32) انجام ميدنو برام واضح توضيح بدي.ن
يه سوال ديگه هم دارم براي چي operator اول به صورت مرجع اعلان شده؟



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

abtin5
08-08-2008, 10:37
آقا اين كد به c هستش يا ++c؟:46:

Mina Mehdizadeh
08-08-2008, 22:15
آقا اين كد به c هستش يا ++c؟:46:

اینطور که من دیدم توی کد از کلاس استفاده شده بود.....به ++c نوشته شده !

abtin5
09-08-2008, 07:48
خب پس ميشه يكي اينو به C هم ترجمه كنه ما هم بفهميم؟

ممنون ميشم.

mahdi7s
09-08-2008, 09:55
هيشكي نيست جواب ما رو بده

Mina Mehdizadeh
09-08-2008, 13:06
هيشكي نيست جواب ما رو بده

من فکر کردم مشکلتون حل شده ......الان کدتون رو میبینم !

mahdi7s
10-08-2008, 11:08
پس خانوم مهدي زاده چي شد؟

Mina Mehdizadeh
10-08-2008, 18:04
توی خود کد براتون یه چیزایی نوشتم ( در حدی که بلد بودم !).....امیدوارم بدردتون بخوره :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Mina Mehdizadeh
10-08-2008, 18:08
خب پس ميشه يكي اينو به C هم ترجمه كنه ما هم بفهميم؟

راستش فکر نمیکنم بشه این کد رو به زبان C نوشت .....چون علاوه بر کلاس ( که توی c نداریم ....البته میشه با استراکچر شبیه سازیش کرد ولی خوب استراکچر امکانات کلاس رو نداره ) اپراتور ++ اور لود ( overload ) شده که توی c از این کارا نمیشه کرد ( راستش اگرم بشه من بلد نیستم !!!)