estoy casi 100% seguro de que tengo el derecho de sintaxis en ambas clases, sin embargo, me estoy poniendo los siguientes errores:clases en varios archivos en C++
Para CShape.cpp - "error C2011: ' CShape': 'clase' tipo redefinición" para CCircle.cpp - "CS2504 de error: 'CShape': clase base indefinido"
aquí está el código completo para CShape.cpp
#include <iostream>
using namespace std;
class CShape
{
protected:
float area;
virtual void calcArea();
public:
float getArea()
{
return area;
}
}
Y aquí está el 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 se puede ver, CShape es la clase base que se CCircle suppsoed heredar de. Soy bastante nuevo en C++, por lo que podría tener las estructuras de archivos incorrectas (¿se supone que la base debe estar en un archivo de encabezado?), Si algo así es importante.
encabezado para el archivo de cabecera está ausente? ¿Qué tal si coloca '#pragma una vez' al comienzo de' CShape.h'? Por cierto, 'using namespace ...;' es un mal olor para los archivos de encabezado. –
Olvidó los puntos y comas al final de las definiciones de clase. –
@KerrekSB, sí, ¡no es C# ni Java! –