PDA

View Full Version : گرانبار (overloading) کردن اپراتور =



mehran_gh
چهارشنبه 28 فروردین 1392, 21:26 عصر
چطور میشه اپراتور = رو به صورتی overload کرد که در سمت راست آرایه دریافت کنه ؟
به این صورت :

TMS A = {(“hadi”,10),(“ali”,5),(“saman”,20)}

حامد مصافی
چهارشنبه 28 فروردین 1392, 23:56 عصر
#include <iostream>
#include <initializer_list>
#include <vector>

using namespace std;

#define TWODARRAY initializer_list<pair<string, int>>

class TMS
{
vector<pair<string, int>> elements;

public:

TMS()
{
}

TMS(TWODARRAY arr)
{
readElements(arr);
}

TMS& operator = (TWODARRAY arr)
{
readElements(arr);
return *this;
}

void readElements(TWODARRAY arr)
{
TWODARRAY::iterator it;
for ( it=arr.begin(); it!=arr.end(); ++it){
cout << (*it).first << '\t' << (*it).second << endl;
pair<string, int> p = make_pair<string, int>(
(string)(*it).first,
(int)(*it).second
);
elements.push_back(p);
}
}
};

int main(void)
{
TMS A = {{"hadi",10},{"ali",5},{"saman",20}};
//or TMS B ({{"hadi",10},{"ali",5},{"saman",20}});

return 0;
}