मैंने इस प्रोग्राम को सी ++ अभ्यास पुस्तक से कॉपी किया है। दृश्यों के पीछे क्या चल रहा है?पॉइंटर-टू-सदस्य ऑपरेटरों को समझना
उम्मीद उत्पादन होता है:
राशि = 30 योग = 70
#include<iostream>
using namespace std;
class M
{
int x;
int y;
public:
void set_xy(int a, int b)
{
x=a;
y=b;
}
friend int sum(M m);
};
int sum (M m);
//so far so good, problem begins from here. what's happening after here?
{
int M ::*px = &M ::x;
int M ::*py = &M ::y;
M *pm =&m;
int s= m.*px+ pm->*py;
return s;
}
int main()
{
M n;
void (M :: *pf)(int, int) = &M ::set_xy;
(n.*pf)(10, 20);
cout <<"sum=" << sum(n) << endl;
M *op= &n;
(op-> *pf)(30,40);
cout << "sum=" << sum(n)<< endl;
cin.ignore();
getchar();
return 0;
}
"-> *" दो के बजाय एक ऑपरेटर है।तो वे अलग नहीं किया जा सकता है। आप लिख नहीं सकते "-> *"। – fefe
कि समस्या हल हो गई है। क्या कोई इसे समझाने की व्याख्या कर सकता है? –
टैग "विजुअल-स्टूडियो" को हटा रहा है, क्योंकि यह संकलक – iammilind