یافتن circular dependency - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۲۲۱ نفر آنلاین
۷۴ عضو و ۱۴۷ مهمان در سایت حاضرند

یافتن circular dependency

+2 امتیاز
سلام.
من حدوداً 20 تاکلاس توی 12 تا هدر فایل پیاده سازی کردم که این کلاس به هم dependecy زیادی دارند الان یکی از این هدر ها رو توی یکی دیگه include کردم
الان ویژوال استدیو 2012 خطای  error C2146: syntax error : missing ';' before identifie را میده چطور میشه همچین چیزی را رفع کنم؟فکر می کنم circular dependency وجود داشته باشه آیا راهی وجود نداره که بتونیم سریع تشخیصش بدیم یا جوری کلاس ها را طراحی کنیم که circular dependency نداشته باشیم.
کل پروژه را زیرورو کردم ولی درست نشده کلافم.
سوال شده آذر 7, 1392  بوسیله ی sailent (امتیاز 355)   16 44 59

2 پاسخ

+2 امتیاز
 
بهترین پاسخ
چند تا پیشنهاد برای جلوگیری از این جور مشکلات

1_ شاید کلا نحوه design کلاسات مشکل داشته باشه از مفاهیم Abstract,inheritance و ... سعی کن استفاده کنی .

2_ حتما از include guard ها استفاده کن .

3_  هر کلاس رو داخل یک فایل جدا تعریف کن .

4_ تا اون جایی که میشه include ها رو داخل فایل های cpp به جای .h تعریف کن

5_به جای include کردن فایل هدر اون جا هایی که میشه از Forward declaration استفاده کن
پاسخ داده شده آذر 7, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد آذر 8, 1392 بوسیله ی مصطفی ساتکی
+1 امتیاز
یه چیزی رو که امید یادش رفت بگه این مورد که شما توی سورس راست کلیک کنید و از منوی ظاهر شده Genrate graph of include file رانتخاب کنید حالا شما dependency کدتان را می بینید حالا گزینه layout بعد Analyser بعد Circular refrence analyser را انتخاب کنید اگر این 2 تا از include های شما با خط قرمز به هم وصل باشند یعنی dependency circular دارید بایستی در آن موارد بیاید header ی را که کلاس های کمتری دارد را کلاس مربوط به این هدر را در دیگر هدر ها forward کنید.
پاسخ داده شده آذر 8, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...