View Full Version : سوال : کار با پوینتر به تابع
shaaadi
پنج شنبه 06 اسفند 1388, 12:17 عصر
من نمیدونم پوینتر به یک تابع را چه جوری از تو structure صدا کنم ؟
مثلا یک structure داریم و میخایم با اون یک تابع را صدا کنیم چه جوری باید بنویسم برای صدا کردنش ؟
struct product
{
void* (*A)(void*);
}
و تابع ای که صدا میکنم اینطوری هست :
int b(int,int)یعنی باید cast بشه ... که اونم نمیدونم چه طوری هست ؟
simul8or
پنج شنبه 06 اسفند 1388, 12:53 عصر
struct همان طور که از نامش پیداست، یک ساختار برای تعریف متغییر،اشاره گر،شئ و اعلان توابع است، نه مقدار دهی و یا فراخوانی(به غیر موارد استاتیک). اگر منظور شما اعلان است، کد زیر نحوه اعلان توابع و تعریف آن را نشان می دهد:
(compiled with visual studio 2008, no problem)
#include <iostream>
#include <cstdlib>
using namespace std ;
////////////////////
//code by simul8or//
////////////////////
void OutSum(int x,int y)
{
cout<<x+y<<" :OutSum do it"<<endl;
}
struct simul8or{
int x;//not used!
float y;//not used!
void InSum(int,int);
void (*funcPtr)(int,int);
}sim;
int main ()
{
sim.InSum(5,6);
sim.funcPtr=&OutSum;
sim.funcPtr(4,3);
system("pause");
return 0 ;
}
void simul8or::InSum(int x, int y)
{
cout<<x+y<<" :InSum do it"<<endl;
}
shaaadi
پنج شنبه 06 اسفند 1388, 13:30 عصر
مرسی ... منظورم دقیقا همینی بود که شما گفتی ! اینجا دیگه نمیشه از -> استفاده کرد ؟
simul8or
پنج شنبه 06 اسفند 1388, 13:50 عصر
مرسی ... منظورم دقیقا همینی بود که شما گفتی ! اینجا دیگه نمیشه از -> استفاده کرد ؟
دوست عزیز عملگر -> زمانی استفاده می شود که شما یک اشاره گر به شئ داشته باشید،مثلا در کد زیر از -> استفاده شده. اینها مباحث ساده C++ هستند، مطمئنا با اندکی مطالعه با راحتی می توانید مشکلات خود را حل کنید.
#include <iostream>
#include <cstdlib>
using namespace std ;
////////////////////
//code by simul8or//
////////////////////
void OutSum(int x,int y)
{
cout<<x+y<<" :OutSum do it"<<endl;
}
struct simul8or{
int x;//not used!
float y;//not used!
void InSum(int,int);
void (*funcPtr)(int,int);
}*sim=new simul8or;
int main ()
{
sim->InSum(5,6);
sim->funcPtr=&OutSum;
sim->funcPtr(4,3);
delete sim;
system("pause");
return 0 ;
}
void simul8or::InSum(int x, int y)
{
cout<<x+y<<" :InSum do it"<<endl;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.