PDA

View Full Version : تابعی برای دریافت همه دیتاتایپ ها



Salah Sanjabian
چهارشنبه 24 آذر 1389, 21:52 عصر
سلام خدمت همه دوستان.
چطور میشه یه تابع با یه آرگومان از نوع اشاره گر داشت که هر Datatype ی رو قبول کنه البته
بدون استفاده از template ها , Overloading توابع.
یه چیزی مثه این ولی بدون استفاده از template ها , Overloading


template<class t>
void PointerProcedure(t *a)
{
*a=14;

}

void main()
{
int intNumber=10;
double dblNumber=25.3;

cout<<"The intNumber is :"<<intNumber<<endl;
cout<<"The dblNumber is :"<<dblNumber<<endl;

PointerProcedure(&intNumber);
PointerProcedure(&dblNumber);

cout<<"All up Value must have to 14"<<endl;

cout<<intNumber<<endl<<dblNumber<<endl<<chr ;


int get;
cin>>get;

Salah Sanjabian
جمعه 26 آذر 1389, 00:04 صبح
سلام.
نیم ساعتی رو سرچ کردم و باالاخره پیداش کردم. باید از اشاره گر نوع Void استفاده کرد.
البته به طور مستقیم نمیشه ازش استفاده کرد وباید تبدیل نوع صورت بگیره.


#include <iostream>
using namespace std;

enum type
{
Int,
Double,
Char,
Struct,
};

struct MyStruct
{
int Age;
};
void voidPointer (void *Pointer, type eType)
{
MyStruct *PointerStruct;

switch (eType)
{
case Int:
//cout<<*static_cast<int *>(Pointer)<<endl;
*static_cast<int *>(Pointer)+=1;
break;
case Double:
//cout<<*static_cast<double *>(Pointer)<<endl;
*static_cast<double *>(Pointer)+=1;
break;
case Char :
//cout<<*static_cast<char *>(Pointer)<<endl;
*static_cast<char *>(Pointer)+=1;
break;
case Struct:
PointerStruct= static_cast<MyStruct *>(Pointer);
PointerStruct->Age +=1;

break;
}

}





void main()
{

int intNumber=20;
double dblNumber=14.3;
char chr='A';

MyStruct StructSample;
StructSample.Age=23;

cout<<"the Orginal IntNumber is: "<<intNumber<<endl;
cout<<"the Orginal dblNumber is: "<<dblNumber<<endl;
cout<<"the Orginal Char is: "<<chr<<endl;
cout<<"the Orginal StructSample.age is: "<<StructSample.Age<<endl;
cout<<endl<<"After Change Vlaue by Pointer(+ Value)"<<endl;

voidPointer(&intNumber,Int);
voidPointer(&dblNumber,Double);
voidPointer(&chr,Char);
voidPointer(&StructSample,Struct);

cout<<intNumber<<endl;
cout<<dblNumber<<endl;
cout<<chr<<endl;
cout<<StructSample.Age<<endl;

int get;
cin>>get;


}