So I have these two classes: `Foo` and `Bar`.

```
//forward declaration for Bar
class Bar;

typedef enum Type { TYPE1, TYPE2, TYPE3 };

// My class Foo
class Foo
{ 
public:
    explicit Foo(Type fooType) 
        :mType(fooType) 
    {} 

    Type getFooType() const
    {
        return mType;
    }

inline bool operator==(const Bar& bar) { return (bar.getBarType() == mType); } //ERROR: error C2027: use of undefined type 'Bar'

private:
    Type mType; 
};

// My class Bar
class Bar
{ 
public:
    explicit Bar(Type barType) 
        :mType(barType) 
    {} 

    Type getBarType() const
    {
        return mType;
    }

private:
    Type mType; 
};

```

Now somewhere in my code, I want to compare two instances (one from the Foo and other from Bar class).
Like this:

```
if(myBar->getBarType() == myFoo->getFooType())
{
 //...
}

```

**QUESTION:**
I know that I need to implement operator== to allow this comparation.
So I've done as seen above...
And I get that error, despite the fact that I've made the forward declaration.
What am I missing here that allows me to compare using the operator== on both classes?