Questo è il listato di un piccolo file C++.
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
class poligono
{
public:
int lati;
poligono(int n);
poligono();
};
poligono:oligono()
{
lati=3;
}
poligono:oligono(int n)
{
lati=n;
}
// ----------------------------------------
class quadratoublic poligono
{
int lato;
public:
int perimetro();
int area();
quadrato(int dimlato);
quadrato();
};
quadrato::quadrato(int dimlato)oligono(4)
{
lato=dimlato;
}
quadrato::quadrato()oligono(4)
{
lato=10;
}
int quadrato:erimetro()
{
return (lato*lati);
}
int quadrato::area()
{
return (lato*lato);
}
//---------------------- fine classi ------------------
void main(int argc, char* argv[])
{
int x;
poligono *q;
q=new quadrato(100);
x=q->perimetro();
}
IL PROBLEMA
quando faccio (ultima riga) x=q->perimetro(), mi dice che perimetro non è una funzione di poligono. Ciò sta a significare (immagino) che non mi costruisce l'oggetto "quadrato". Perché? Dove potrebbe essere l'errore? Nel costruttore?
Faccio presente che se invece di creare un puntatore alla classe padre (poligono) creo un oggetto di tipo quadrato (direttamente) funziona tutto. WHY?