Классы по нескольким файлам в C ++

Я почти на 100% уверен, что у меня есть правильный синтаксис в обоих этих классах, однако я получаю следующие ошибки:

Для CShape.cpp - «ошибка C2011:« CShape »; : "класс" переопределение типа & quot; Для CCircle.cpp - «ошибка CS2504:« CShape »: базовый класс не определен»

Вот полный код для CShape.cpp

#include <iostream>
using namespace std;

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

И вот код для 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;
    }
}

Как видите, CShape - это базовый класс, от которого CCircle наследуется. Я довольно новичок в C ++, поэтому я могу ошибиться в структуре файлов (может быть, база должна быть в заголовочном файле?), Если что-то подобное имеет значение.

Ответы на вопрос(2)

Ваш ответ на вопрос