Pourquoi est hérité de membre n'est pas autorisé?

Je suis débutant en C++ et je suis en train de faire un des exercices abstraites de la classe et d'héritage.

C'est ma classe abstraite:

#ifndef   SHAPE_H 
#define  SHAPE_H
class Shape
{
    public:
        virtual void area();
        virtual void perimeter();
        virtual void volume();
};
#endif

C'est ma classe qui implémente la classe abstraite:

#include <iostream>
#include <cmath>
#include "Shape.h"
using namespace std;

class Circle : public Shape
{
    public:
        Circle(int);
    private:
        int r;
};

Circle::Circle(int rad)
{
    r = rad;
}

void Circle::area()
{
    cout << "Area of this cirle = " << 3.14 * pow(r, 2) << endl;
}

void Circle::perimeter()
{
    cout << "Perimeter of this cirle = " << 2 * 3.14 * r << endl;
}

void Circle::volume()
{
    cout << "Volume is not defined for circle." << endl;
}

J'ai eu des lignes rouges sous area(), perimeter(), et volume() dans mon Circle classe, qui a montré "Error: inherited member is not allowed". Je suis allé dans ma classe ppt et googlé pour la réponse, mais pas de chance. Toute aide est appréciée.

  • vous devez toujours déclarer les méthodes virtuelles dans une classe dérivée.
  • Shape n'a pas l'air de l'abstrait. Ses fonctions de membre doit être pur virtuel pour que. En outre, il doit déclarer un destructeur virtuel.
  • N'oubliez pas de déclarer virtual ~Shape() {}
  • Voulez juste de corriger la terminologie utilisée dans la question. En résumé, vous dire un fichier d'en-tête, et par le béton-vous vraiment dire votre fichier de définition. Pas sûr si ce que vous avez été à la recherche de méthodes virtuelles pures.
InformationsquelleAutor user1447343 | 2013-02-27