PDA

View Full Version : سوال: ایجاد یک برنامه c++ ویژوال استدیو با دو فایل .cpp



hafez1
دوشنبه 12 مرداد 1394, 19:28 عصر
سلام دوستان.
من یک برنامه نوشتم که چند تا کلاس (فایل .h) داخلش تعریف کردم.
و دو تا فایل .cpp نوشتم که اول باید یکیش رو اجرا کنم و بعدش یکی دیگه رو.
وقتی برنامه رو ران میکنم ارور میده چون انگاری داره دو تا فایل .cpp رو باهم اجرا میکنه.
میخاستم ببینم باید این دوتا فایلو دو تا برنامه جدا کنم یا امکانش هست که همین جا تک تک اجراشون کرد؟

کامبیز اسدزاده
دوشنبه 12 مرداد 1394, 20:22 عصر
سلام دوستان.
من یک برنامه نوشتم که چند تا کلاس (فایل .h) داخلش تعریف کردم.
و دو تا فایل .cpp نوشتم که اول باید یکیش رو اجرا کنم و بعدش یکی دیگه رو.
وقتی برنامه رو ران میکنم ارور میده چون انگاری داره دو تا فایل .cpp رو باهم اجرا میکنه.
میخاستم ببینم باید این دوتا فایلو دو تا برنامه جدا کنم یا امکانش هست که همین جا تک تک اجراشون کرد؟

سلام

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

کامبیز اسدزاده
دوشنبه 12 مرداد 1394, 20:47 عصر
خب ببینید مشکل واضحه...
شما دو تا فایل cpp دارید که جفتشم دارای تابع main هستند.
وقتی برنامه کامپایل و اجرا میشه اولین چیزی که اجرا خواهد شد تابع main هستش که این قانون در تمامی برنامه های C++ موجوده.
شما دو تا فایلتون هم شامل تابع main هست که این اشتباهه باید فقط یک تابع main با این شرایط داشته باشید میتونید یکیش رو عوض کنید به نام دیگه ای و بعد در داخل هر تابع یا مثلا main فراخوانیش بزنید.

hafez1
دوشنبه 12 مرداد 1394, 23:07 عصر
آخه میدونید چیه؟
من لازم دارم که اول
SASIprotocol اجرا بشه که این باعث آپدیت شدن یسری مقادیر میشه و بعد از اینا Attack.cpp رو اجرا کنم.و لازمه که خروجیای هر دو رو ببینم.
اگه بیام دو تا برنامه جداشون کنم که دیگه به هم مرتبط نیستند.
چیکار میشه کرد؟

کامبیز اسدزاده
دوشنبه 12 مرداد 1394, 23:16 عصر
آخه میدونید چیه؟
من لازم دارم که اول
SASIprotocol اجرا بشه که این باعث آپدیت شدن یسری مقادیر میشه و بعد از اینا Attack.cpp رو اجرا کنم.و لازمه که خروجیای هر دو رو ببینم.
اگه بیام دو تا برنامه جداشون کنم که دیگه به هم مرتبط نیستند.
چیکار میشه کرد؟


خب شما
SASIprotocol رو در تابع main بیارید و تابع مربوط به Attack رو هم اسمش رو تغییر بدین main نذارید یه اسمی بدین به جز main و اون رو بر اساس شرایطی که میخواهید بعد از اجرا شدن SASIprotocol صدا بزنید خیلی سخت نگاه نکنید به این موضوع کافیه تابع ها رو مشخص و فراخوانی کنید.

hafez1
سه شنبه 13 مرداد 1394, 21:04 عصر
ببخشید من متوجه نمیشم باید چیکار کنم دقیقا!!!!!!!!!!!!!
امکان داره بیشتر توضیح بدید؟

hafez1
سه شنبه 13 مرداد 1394, 22:03 عصر
میشه که attack رو جدا تعریف نکنم و بیارمش ادامه ی همین پروتکل SASI ولی خوب میخام اگه روشی هست که اونجوری بشه کاریش کرد بهتره.

کامبیز اسدزاده
چهارشنبه 14 مرداد 1394, 17:13 عصر
میشه که attack رو جدا تعریف نکنم و بیارمش ادامه ی همین پروتکل SASI ولی خوب میخام اگه روشی هست که اونجوری بشه کاریش کرد بهتره.

بله میشه ، تا جایی که من بررسی کردم این کدها رو از جایی کپی کردین... به هر حال برای حل این مشکل شما باید با نحوه تعریف و فراخوانی توابع و کلاس ها و همچنین شرایط و دسترسی هاشون آشنا باشید.
اینکه attack رو بیارید ادامه SASI مشکلی نیست ولی باید ببینید کدی که اجرا میشه چه کار داره میکنه ! شاید مقادیری باید قبل از فراخوانی خود attack توسط SASI ارسال و دریافت بشه و یا برعکس !

این لینک هارو بررسی کنید و با نحوه صحیح فراخوانی توابع کلاس ها آشنا بشید :

http://www.tutorialspoint.com/cplusplus/cpp_class_member_functions.htm
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Classes/Member_Functions

hafez1
پنج شنبه 15 مرداد 1394, 08:13 صبح
کدها اصلا کپی شده نیستن.خودم پس از سال ها کد سی++ زدم.
مشکلاتش برای همینه.
البته دیگه تموم شد درستش کردم.