#include <iostream>
#include <vector>
using namespace std;

struct X {
    explicit X(int n) : N(n) {}
    int N;
    void print() const { cout << "X::N=" << N << endl; }
};

class Y {
public:
    Y() {
        _v.push_back(X(10));
        _v.push_back(X(20));
    }
    
    X& get(int index) {
        return _v.at(index);
    }
    
private:
    vector<X> _v;
};

int main() {
    Y y;
    X& x1 = y.get(0);
    x1.print(); // prints 10
    
    x1 = X(100);
    y.get(0).print(); // prints 100
}
