You use a forward declaration when you need a complete type.
You must have a full definition of the class in order to use it.
The usual way to go about this is:
1) create a file Cat_main.h
2) move
#include <string>
class Cat
{
public:
Cat(std::string str);
// Variables
std::string name;
// Functions
void Meow();
};
to Cat_main.h. Note that inside the header I removed using namespace std; and qualified string with std::string.
3) include this file in both Cat_main.cpp and Cat.cpp:
#include "Cat_main.h"