सी ++ मुझे आश्चर्यचकित करता है। आज मुझे -> * ऑपरेटर के बारे में पता चला। यह अधिभार योग्य है लेकिन मुझे नहीं पता कि इसे कैसे शुरू किया जाए। मैं इसे अपनी कक्षा में अधिभारित करने का प्रबंधन करता हूं लेकिन मुझे कोई संकेत नहीं है कि इसे कैसे कॉल करें।सी ++ में ऑपरेटर -> * ऑपरेटर क्या है?
struct B { int a; };
struct A
{
typedef int (A::*a_func)(void);
B *p;
int a,b,c;
A() { a=0; }
A(int bb) { b=b; c=b; }
int operator + (int a) { return 2; }
int operator ->* (a_func a) { return 99; }
int operator ->* (int a) { return 94; }
int operator * (int a) { return 2; }
B* operator ->() { return p; }
int ff() { return 4; }
};
void main()
{
A a;
A*p = &a;
a + 2;
}
संपादित करें:
जवाब देने के लिए धन्यवाद। अतिभारित समारोह कॉल करने के लिए मैं लिख
void main()
{
A a;
A*p = &a;
a + 2;
a->a;
A::a_func f = &A::ff;
(&a->*f)();
(a->*f); //this
}
सरल: 'एक -> * 42; अतिभारित इस मामले में ऑपरेटर' – sellibitze
नहीं, आप न बुलाया जाए। आप जो कहते हैं वह अंतर्निहित है। आपके अधिभारित ऑपरेटर को दूसरे पैरामीटर के रूप में 'int' की आवश्यकता होती है। – AnT
@AndreyT: नए मुख्य को प्रतिबिंबित करने के लिए संरचना को अद्यतन करना। –