View Full Version : نوشتن تابع با پارامتر مرجع در C++
zahrasaffar
پنج شنبه 22 آبان 1393, 13:45 عصر
سلام دوستان . من یه برنامه دارم که به زبان C++ نوشته شده و از کتابخونه miracl برای کار با اعداد بزرگ استفاده کردم . الان میخوام این برنامه رو به صورت تابع در بیارم . در واقع برنامه من سه تا خروجی داره . X ,Y , Z . من وقتی تابعم رو مینویسم به من خطای syntax میده در صورتیکه تمام موارد رو رعایت کردم .البته تقریبا مطمئن شدم که دلیل خطا کتابخونه ست . توابعی که یک خروجی رو برمیگردونن مشکلی ندارم باهاشون ولی اگه بخوام چند تا خروجی برگردونم به مشکل برمیخورم . اگه کسی راه حلی داره لطفا پیشنهاد بده .
ممنون
این تعریف تابع هستش :
big Predictor(big X,big Y,big Z,big &X_out,big &Y_out,big &Z_out)
{
}
صدا زدنش :
Predictor(X_w,Y_w,Z_w,X2_W_Out,Y2_W_Out,Z2_W_Out);
اینم خطای برنامه :
125590
مسعود اقدسی فام
پنج شنبه 22 آبان 1393, 15:51 عصر
Big درست هست و نه big. خودتون big رو از نو تعریف کردید؟
zahrasaffar
پنج شنبه 22 آبان 1393, 17:08 عصر
Big درست هست و نه big. خودتون big رو از نو تعریف کردید؟
نه . big خودش یه نوع هستش که توی کتابخونه miracl تعریف شده . برای کار با اعداد خیلی بزرگ از این کتابخونه میتونید استفاده کنید و معمولا برای الگوریتم های رمزنگاری استفاده میشه
مسعود اقدسی فام
پنج شنبه 22 آبان 1393, 20:01 عصر
من بر اساس این مثال گفتم:
https://certivox.org/pages/viewpage.action?pageId=7635919
شاید big هم تعریف شده باشه. اما اینجا از Big برای کار با اعداد بزرگ استفاده شده.
zahrasaffar
جمعه 23 آبان 1393, 09:51 صبح
مشکلم حل شد .
فقط خواستم اینجا هم جوابشو بذارم که اگه دوستان خواستن استفاده کنن
اگه دقت کنید در خطا نوشته شده که من دارم روی فایل ebrick.c کار میکنم . در صورتیکه نوع تابع نویسی با پارامتر مرجع رو با C++ نوشتم . :بامزه: باید کدها رو به این صورت تغییر میدادم :
big Predictor(big X, big Y, big Z, big *X_out, big *Y_out, big *Z_out)
و برای صدا زدن تابع :
Predictor(X_w,Y_w,Z_w,X2_W_Out,Y2_W_Out,Z2_W_Out);
موفق باشید :لبخندساده:
zahrasaffar
جمعه 23 آبان 1393, 09:54 صبح
من بر اساس این مثال گفتم:
https://certivox.org/pages/viewpage.action?pageId=7635919
شاید big هم تعریف شده باشه. اما اینجا از Big برای کار با اعداد بزرگ استفاده شده.
ممنون از اینکه وقت گذاشتید . بله درسته هر دو انگار تعریف شده هستن . رو اون مورد خطایی نمیداد بهم :لبخندساده:
مسعود اقدسی فام
جمعه 23 آبان 1393, 15:04 عصر
مشکلم حل شد .
فقط خواستم اینجا هم جوابشو بذارم که اگه دوستان خواستن استفاده کنن
اگه دقت کنید در خطا نوشته شده که من دارم روی فایل ebrick.c کار میکنم . در صورتیکه نوع تابع نویسی با پارامتر مرجع رو با C++ نوشتم . :بامزه: باید کدها رو به این صورت تغییر میدادم :
big Predictor(big X, big Y, big Z, big *X_out, big *Y_out, big *Z_out)
و برای صدا زدن تابع :
Predictor(X_w,Y_w,Z_w,X2_W_Out,Y2_W_Out,Z2_W_Out);
موفق باشید :لبخندساده:
اتفاقا منم اول دیدم که پسوند فایل c هست و این زبان مفهوم متغیر مرجع رو نداره. اما چون تاکید کرده بودید که برای ++C کد زدید بیخیالش شدم!
راستی پارامترهای سوم به بعد نباید با & به نابع ارسال شن؟ چون هدف انتقال آدرس هست. یا خودشون از جنس اشارهگر هستن؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.