Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> سوال در مورد فايل هاي تو در تو در ++C
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

سوال در مورد فايل هاي تو در تو در +
نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 23 آذر 1384 - 01:54
پاسخ بصورت نقل قول
در مورد فايل هايي كه بايد در هم Include بشند يه سوال داشتم :
من چند كلاس جدا در فايل هاي cpp و h ذخيره كردم ولي ميخام كه اونها رو در همديگه هم Include كنم مثلا :
سه كلاس در 6 فايل h , cpp ذخيره شدند و يكي از فايل هاي h بايد در دو فايل h ديگه include بشه تا بشه از تايپ اون در دو كلاس ديگه استفاده كرد و در نهايت اين سه فايل h در برنامه دوباره include بشه ولي كامپايلر ارور ميده :
يا ميگه too many include files يا class type redefinition
اين ارور ها درست هست ولي بايد راهي باشه كه بتونيم چنين كاري رو انجام بديم . حالا اگه كسي راهي داره ممنون ميشم.
با تشكر.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
MANI_CHET
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 9 آبان 1384
تعداد ارسالها: 82


4 شنبه 23 آذر 1384 - 08:18
پاسخ بصورت نقل قول
اول فايل سر آمدت از دستور پردازشگر #ifndefine استفاده ميكني يا نه ؟
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 23 آذر 1384 - 11:41
پاسخ بصورت نقل قول
نه ! درست در بارش نميدونم . لطف ميكني يكم توضيح بدي.
ممنون.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


4 شنبه 23 آذر 1384 - 13:34
پاسخ بصورت نقل قول
خوب فكر كنم بايد از وراثت استفاده كني
در جلوي تعريف كلاست اينو بنويس.
__gc class MyClass2 : myclass1

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


4 شنبه 23 آذر 1384 - 14:18
پاسخ بصورت نقل قول
اول هر فايل header مطمئن باش که اين دستور رو گذاشتی :
#pragma once

بعدشم سعی کن در حد امکان در يک فايل include فايل های ديگر رو include نکنی.
اگر می خواهی که type هايی که وجود نداره رو تعريف کنی بهتره که فقط decleration اشون رو در header تعريف کنی.
مثال اين کلاس فرض کن توی Vector.h تعريف شده :
class Vector3
{
....
};

يک کلاس ديگه هم داری توی فايل Box.h که توش از همين Vector3 استفاده کردی.
در اول Box.h به جای اينکه بنويسی #include <Vector.h> بنويس class Vector3;
و در فايل Box.cpp هر چی که م خوای مثله Vector.h رو include کن.
البته اين به شرطی جواب می ده که متغيرهای کلاس ات از نوع Reference يا pointer باشند (که بهتر هم هست بيشتر همينجوری باشند).

در ضمن اگه کلاس های اوليه ای داری که زياد استفاده می شوند، و بصورت reference و pointer هم معمولا نيستن . بهتره اونهارو در precompiled header اضافه کنی (در فايل Stdafx.h) که ديگه احتياجی به هيچ include ای در header های ديگه هم نيست.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 23 آذر 1384 - 15:15
پاسخ بصورت نقل قول
ممنون از راهنماييتون, كارم با #ifndef راه افتاد.

Kochol@ :
من از دات نت استفاده نميكنم و بدون Include كردن نميشه از وراثت استفاده كرد( تا اونجايي كه من خبر دارم ) بعد هم وراثت هر جايي استفاده نداره و بايد از تايپ به صورت declare استفاده كرد تا تداخلي ايجاد نشه .

sepul2@ :
براي چي بايد بيشتر از pointer استفاده كرد ( اگه ممكن هست يه خورده توضيح بديد ). اخه هر جا يه چيزي در باره pointer ها نوشته . ( من كه قاط زدم ) Shocked
چون pointer ها رو بايد delete كرد من از روش معمولي براي تعريف instance ها استفاده ميكنم .( تا جاي ممكن ) ايا اين روش درست هست ؟

ممنون.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
MANI_CHET
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 9 آبان 1384
تعداد ارسالها: 82


4 شنبه 23 آذر 1384 - 19:26
پاسخ بصورت نقل قول
GameOver نوشته:
نه ! درست در بارش نميدونم . لطف ميكني يكم توضيح بدي.
ممنون.


هرچند گفته بودي كارت راه افتاد ولي لازم ميدونم توضيحي بدم

دستور پيش پردازنده #ifndef مشخص ميكنه كه در صورتي كه نام فايل سرآمد قبلا تعريف شده ، دستورات بين #ifndef و #endif اجرا نشن .

z

#define MYHEADER_H
#define MYHEADER_H

دستورات ;
z

#endif

z ها رو ناديده بگير
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


4 شنبه 23 آذر 1384 - 20:59
پاسخ بصورت نقل قول
نقل قول:
براي چي بايد بيشتر از pointer استفاده كرد ( اگه ممكن هست يه خورده توضيح بديد ). اخه هر جا يه چيزي در باره pointer ها نوشته . ( من كه قاط زدم )

يکی از قدرت اصلی زبان C توی همين pointer ها هست.
اين درسته که يه مقدار memory management رو برات سخت تر می کنه ولی هر چی بيشتر باهاشون کار کنی بيشتر حال می کنی، و کم کم مشکلی برات پيش نمیاره.
مزيت هم زياد دارن ، يکی کاربردشون توی قضيه inheritance هست و تبديل کلاس هايی که از هم ديگه مشتق شده اند. من اينجا نمی تونم بهت درست توضيح بدم و توی نمونه برنامه ها مشخص می شه.
کلا کاربرد و سرعت اصليشون توی Data structure ها هست مثل tree structure ، lists و غيره.
توی پاس کردن متغير بع توابع هم تا اونجا که می تونی از reference يا pointer استفاده کن که اين به سرعت برنامه کمک زيادی می کنه.
اگه کلا با memory management مشکل داری می تونی يک کلاس با استفاده از template ها بسازی که اين کار رو )delete کردن و غيره) رو برات اتوماتيک انجام می ده که بهش می گن smart pointers ، يک Search توی گوگل بزنی نمونه کد هم زياد براش پيدا می شه.
البته اين دليل نمی شه که همش هم از pointer ها استفاده کنی ، instance های معمولی هم خيلی جاها کاربرد راحتری داره مخصوصا توی کلاس ها و Structrure هاس ساده تر ولی کلا سعی کن توی ساختار هايی که به سرعت و انعطاف بيشتری نياز دارن تا اونجا که ممکنه از pointer استفاده کنی.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


5 شنبه 24 آذر 1384 - 02:22
پاسخ بصورت نقل قول
ممنون از اين كه اينقدر زود جواب ميديد . اميدوارم كه بتونم جبران كنم. Surprised
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |