تفکیک فایل cpp به چند فایل (ویژوال استادیو)

سلام.من حدود دویست خط کدم توی چندین فایل cpp عین هم بین چند ده خط کد تکرار میشه و جا میگیره.چطورمیشه من همون دویست خط که تکرار میشه رو بندازم تو یک صفحه یا فایل مجزا.بعد اون صفحه رو لینک بدم توی اون صفحاتی که گفتم کدم در اونها تکرار میشه میان اون ده ها خط کد.همچین چیزی شدنیه؟؟سی پلاس پلاس..و ویژوال استادیو استفاده می کنم

پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

سلام، اگر درست متوجه شده باشم میخواید از نوشتن کد تکراری جلوگیری کنید، در این صورت میتونید از شی گرایی استفاده کنید.
اول یک کلاس بسازید و اسمش رو هرچیز دوست دارید بزارید(ترجیحا اسمی مربوط) و در دسترس صفحاتی که قراره کد تکرار شونده رو استفاده کنند قرار بدید، بعد در اون کلاس یک متد بنویسید و کدی که تکرار میشه رو داخلش بگذارید، طبیعتا اگر از متغیر خاصی استفاده میکنه اون دویست خط کد، متغیرا رو به عنوان ورودی متد در نظر بگیرید.
بعد در هرجا از صفحات مختلف احتیاج بود یک شیء نمونه از کلاس بسازین و متدی که تعریف کردین رو از اون شیء صدا کنید.
موفق باشید.

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

ممنون.راستش باید از اول یک سری تمهیدات می چیدم که کار به اینجا نرسه.اما حالا که رسیده.تصحیح مشکله.من می خواستم بدون دردسر از تکرار کدها جلوگیری کنم.مثلا توی این دویست خط کد بالای چهل پنجاه تا متغیر هست.یعنی حالا من باید متدی بنویسم که چهل تا متغیر رو ورودی بگیره!!جالبی نیست و بازنویسی کار دشواریه!اگر میشد بدون درسر همونطور که گفتم اون دویست خط کد رو بزارم تو یک صفحه و بعد لینک بدم به توی صفحات دیگه.خیلی خوب میشد.

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

متوجهم چی میفرمایین توضیح میدم در خصوص داینامیک اضافه کردن کد به فایلتون، اما در هرصورت به نظر میاد کدتون به ریفکتور احتیاج داره، اگه همون دویست خط ریفکتور شن احتمالا به چند تا متدی میرسن که هرکدوم دو سه تا متغیر بیشتر نخوان. البته اون هم زحمت داره، ولی به اون صورتی که فرمودین پنجاه تا متغیر بگیره نخواهد شد.
حالا بریم سر کاری که شما فرمودید:
کاری که شما میخواین انجام بدید اینه که یه کدی رو از فایل متنی و ... قبل از اینکه کامپایل بشه برنامه به صفحات مختلف از یه سورس ثابت اضافه کنید. کاری که حس میکنم ضررش از سودش بیشتره اگه برنامتون تجاریه و بعدا قراره نگه داریش بکنید.
چیزی که قطعیه اینه که کار باید قبل از کامپایل انجام شه و بنظرم همین 3 راه میرسه:
1- از امکانی تو CPP استفاده کنید که خودش چیزی مثل لینک بگیره و قبل از کامپایل خودش کد رو در خطوط مربوطه جاگذاری کنه.
2- به فایل های CPP مثل یک فایل Text برخورد کنید و قبل از کامپایل دویست خط کد رو تو خط های خاصی ازش از طریق برنامه نویسی کپی پیست کنید تا Cpp کامپایل رو انجام بده و بعد از پایان برنامه یه بخش دیگه ران کنید که اون نوشته هارو پاک کنه. که این هم فقط توهم Reusability بهتون میده.
3- بخواید کد رو به صورت یک فانکشن (در یک کلاس) در بیارید و بعد اونو داینامیک لود کنید که باز هم با همون مشکل متغیر ها که فرمودید برمیخورید و فرقی با پاسخ قبلیم نداره.
در مورد راهکار اول تا جایی که من اطلاع دارم و الان یه نگاهی انداختم به استک، چنین امکانی نداره خود محیط های توسعه cpp.باز جستجو بفرمایید.(البته منطقی هم نیست که فیچر خوندن کد به صورت تکست اضافه شه به این محیط ها) در یکی از نظراتِ تاپیکی که لینکشو آقای مشفقی گذاشتن هم این مسئله تصریح شده که نمیشه کد رو فقط با یه چیزی شبیه لینک کپی و پیست کرد.

در مورد راهکار دوم هم یک لینک که این رو درخواست کردن مشاهده بفرمایید همون کار رو انجام داده:
https://stackoverflow.com/questions/38277523/c-executing-a-code-from-a-text-file
در مورد راهکار سوم هم این لینک رو مشاهده کنید:
https://stackoverflow.com/questions/11016078/is-it-possible-to-create-a-function-dynamically-during-runtime-in-c
در آخر شما رو به صراط مستقیم و روی آوردن به زحمت ریفکتور کدتون دعوت میکنم😄

موفق باشید.

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

همونطور که دوستان گفتن ،شی گرایی میتونه خیلی بهتون کمک کنه در این زمینه،اما اگر نمیتونید از شی گرایی استفاده کنید بهتره چند فایل هدر بسازید و بعد include کنید.لینک زیر یک نمونه از پیاده سازی با چند فایل هدر رو توضیح داده:

https://stackoverflow.com/questions/12733888/regarding-c-include-another-class

online-support-icon