N
Neil
I am trying to access the public methods of a private data member in
the composition. The following is my code. Am I right? If the return
value of function in class Outer 'getInner()' is not reference, I
cannot change the data member ia, why?
//outer.h
class Outer {
class Inner {
int ia;
public:
Inner(int val=0):ia(val) {}
int get() const {return ia;}
void set(int val){ia=val;}
}in;
public:
Outer(int ival=0):in(ival){}
Inner& getInner() {return in;} //What if Inner getInner(){...}
};
//main.cpp
#include <iostream>
#include "outer.h"
using namespace std;
int main(){
Outer out;
int a;
a=out.getInner().get();
cout<<"a="<<a<<endl;
out.getInner().set(124);
int b;
b=out.getInner().get();
cout<<"b="<<b<<endl;
return 0;
}
Many thanks!
the composition. The following is my code. Am I right? If the return
value of function in class Outer 'getInner()' is not reference, I
cannot change the data member ia, why?
//outer.h
class Outer {
class Inner {
int ia;
public:
Inner(int val=0):ia(val) {}
int get() const {return ia;}
void set(int val){ia=val;}
}in;
public:
Outer(int ival=0):in(ival){}
Inner& getInner() {return in;} //What if Inner getInner(){...}
};
//main.cpp
#include <iostream>
#include "outer.h"
using namespace std;
int main(){
Outer out;
int a;
a=out.getInner().get();
cout<<"a="<<a<<endl;
out.getInner().set(124);
int b;
b=out.getInner().get();
cout<<"b="<<b<<endl;
return 0;
}
Many thanks!