I have the following C++ code:

```
#include <iostream>
#include <vector>

using namespace std;

class A
{
   private:
      int i;
   public:
      void f1(const A& o);
      void f2()
      {
         cout<<i<<endl;
      }
};

void A::f1(const A& o)
{
   o.f2();
}

```

It just doesn't compile. Can somebody give a explanation? Thanks!