PDA

View Full Version : نوشتن تابع با پارامتر مرجع در C++



zahrasaffar
پنج شنبه 22 آبان 1393, 12: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, 14:51 عصر
Big درست هست و نه big. خودتون big رو از نو تعریف کردید؟

zahrasaffar
پنج شنبه 22 آبان 1393, 16:08 عصر
Big درست هست و نه big. خودتون big رو از نو تعریف کردید؟

نه . big خودش یه نوع هستش که توی کتابخونه miracl تعریف شده . برای کار با اعداد خیلی بزرگ از این کتابخونه میتونید استفاده کنید و معمولا برای الگوریتم های رمزنگاری استفاده میشه

مسعود اقدسی فام
پنج شنبه 22 آبان 1393, 19:01 عصر
من بر اساس این مثال گفتم:

https://certivox.org/pages/viewpage.action?pageId=7635919

شاید big هم تعریف شده باشه. اما اینجا از Big برای کار با اعداد بزرگ استفاده شده.

zahrasaffar
جمعه 23 آبان 1393, 08: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, 08:54 صبح
من بر اساس این مثال گفتم:

https://certivox.org/pages/viewpage.action?pageId=7635919

شاید big هم تعریف شده باشه. اما اینجا از Big برای کار با اعداد بزرگ استفاده شده.

ممنون از اینکه وقت گذاشتید . بله درسته هر دو انگار تعریف شده هستن . رو اون مورد خطایی نمیداد بهم :لبخندساده:

مسعود اقدسی فام
جمعه 23 آبان 1393, 14: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 کد زدید بی‌خیالش شدم!
راستی پارامترهای سوم به بعد نباید با & به نابع ارسال شن؟ چون هدف انتقال آدرس هست. یا خودشون از جنس اشاره‌گر هستن؟