İstek üzerine birinci sorunun cevabını da koyuyorum. 3. soruyu bilmiyorum çözersem koyarım onu da.
1. soru a) Koddaki hata m'nin private tanımlanması. m private tanımlandığı için dışarıdaki ChangePrivate fonksiyonunda m deiştirilemez.
b) ChangePrivate fonksiyonu class içerisinde friend olarak tanımlanırsa sorun çözülür.
#include <iostream>
using namespace std;
class Point{
public:
friend void ChangePrivate(Point &);
Point(void):m(0){}
void PrintPrivate(void){cout<<m<<endl;}
private:
int m;
};
void ChangePrivate(Point &i){
i.m++;
}
int main(){
Point sPoint;
sPoint.PrintPrivate();
ChangePrivate(sPoint);
sPoint.PrintPrivate();
getchar();
return 0;
}
|