Classes em vários arquivos em C ++

Tenho quase 100% de certeza de que tenho a sintaxe certa em ambas as classes, mas estou recebendo os seguintes erros:

Para CShape.cpp - "erro C2011: 'CShape': redefinição do tipo 'classe'" Para CCircle.cpp - "erro CS2504: 'CShape': classe base indefinida"

Aqui está o código completo para CShape.cpp

#include <iostream>
using namespace std;

class CShape
{
protected:
    float area;
    virtual void calcArea();
public:
    float getArea()
    {
        return area;
    }
}

E aqui está o código para CCircle.cpp

#include <iostream>
#include "CShape.cpp"
#define _USE_MATH_DEFINES
#include "math.h"
using namespace std;

class CCircle : public CShape
{
protected:
    int centerX;
    int centerY;
    float radius;
    void calcArea()
    {
        area = M_PI * (radius * radius);
    }
public:
    CCircle(int pCenterX, int pCenterY, float pRadius)
    {
        centerX = pCenterX;
        centerY = pCenterY;
        radius = pRadius;
    }
    float getRadius()
    {
        return radius;
    }
}

Como você pode ver, o CShape é a classe base da qual o CCircle é suposto herdar. Eu sou muito novo em C ++, então eu poderia ter as estruturas de arquivos erradas (talvez a base deveria estar em um arquivo de cabeçalho?), Se algo assim importa.

questionAnswers(2)

yourAnswerToTheQuestion