#include <iostream>
#include <vector>
using namespace std;
struct GetValue{
private:
int beta;
public:
GetValue(int beta){
this->beta = beta;
}
int operator()(void){
return beta;
}
};
class Base{
public:
int i;
GetValue getValue;
Base(int i, int j):getValue(j){
this->i = i;
}
};
int main() {
const int N = 5;
vector<Base*> bases;
for(int i=0; i<5; i++){
bases.emplace_back(new Base(i, i*i));
}
for(Base* base: bases){
cout << base->getValue() << endl;
//cout << base->getValue.beta << endl;//NG//‘int GetValue::beta’ is private within this context
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBHZXRWYWx1ZXsKcHJpdmF0ZToKCWludCBiZXRhOwoKcHVibGljOgoJR2V0VmFsdWUoaW50IGJldGEpewoJCXRoaXMtPmJldGEgPSBiZXRhOwoJfQoJaW50IG9wZXJhdG9yKCkodm9pZCl7CgkJcmV0dXJuIGJldGE7Cgl9Cn07CgpjbGFzcyBCYXNlewpwdWJsaWM6CglpbnQgaTsKCUdldFZhbHVlIGdldFZhbHVlOwoJCglCYXNlKGludCBpLCBpbnQgaik6Z2V0VmFsdWUoail7CgkJdGhpcy0+aSA9IGk7Cgl9Cn07CgppbnQgbWFpbigpIHsKCWNvbnN0IGludCBOID0gNTsKCXZlY3RvcjxCYXNlKj4gYmFzZXM7CgkKCWZvcihpbnQgaT0wOyBpPDU7IGkrKyl7CgkJYmFzZXMuZW1wbGFjZV9iYWNrKG5ldyBCYXNlKGksIGkqaSkpOwoJfQoJZm9yKEJhc2UqIGJhc2U6IGJhc2VzKXsKCQljb3V0IDw8IGJhc2UtPmdldFZhbHVlKCkgPDwgZW5kbDsKCQkvL2NvdXQgPDwgYmFzZS0+Z2V0VmFsdWUuYmV0YSA8PCBlbmRsOy8vTkcvL+KAmGludCBHZXRWYWx1ZTo6YmV0YeKAmSBpcyBwcml2YXRlIHdpdGhpbiB0aGlzIGNvbnRleHQKCX0KCXJldHVybiAwOwp9