1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <iostream>
#include <vector>
using namespace std;
struct Data
{
float La;
float Lon;
};
class DataWriter
{
public:
DataWriter(){};
~DataWriter();
void setLa(Data &a,float La){a.La = La;}
void setLon(Data &a,float Lon){a.Lon = Lon;}
};
class DataReader
{
public:
DataReader(Data &a){this->data = &a;};
~DataReader();
float getLa(){return data->La;}
float getLon(){return data->Lon;}
private:
Data* data;
};
int main() {
Data a;
DataReader* R_Ptr = new DataReader(a);
DataWriter* W_Ptr = new DataWriter();
W_Ptr->setLa(a,5);
W_Ptr->setLon(a,9);
typedef float (DataReader::*getFonction)();
std::vector<getFonction> vec;
std::vector<getFonction>::iterator it;
getFonction test = (&DataReader::getLa);
vec.push_back(&DataReader::getLa);
vec.push_back(&DataReader::getLon);
for(it = vec.begin(); it < vec.end(); it++)
{
test = *it;
std::cout << (R_Ptr->*(test))();
std::cout << std::endl;
}
W_Ptr->setLa(a,20);
W_Ptr->setLon(a,30);
for(it = vec.begin(); it < vec.end(); it++)
{
test = *it;
std::cout << (R_Ptr->*(test))();
std::cout << std::endl;
}
return 0;
} |