0

2 つのクラスを作成しました。1 つは Shape と呼ばれ、その仮想クラスです。もう 1 つは Circle と呼ばれます (三角形、正方形のようなものをさらに作成するつもりです ....)。オブジェクトの円領域を見つけたい、しかし、それは重要ではありません。これが私の問題です。次のようなオブジェクトを作成したい場合:

vector<Shape *> mStack;
Shape *newShape = NULL;
newShape = new Circle(10.6);
mStack.push_back(newShape);

メインファイルで問題なく作成できますが、「Shape」クラス内で関数を作成しようとすると、次のようになります。

void Shape::Create()
{
    Shape *newShape = NULL;
    newShape = new Circle(10.6);
    mStack.push_back(newShape);
}

次のエラーが表示されます:構文エラー: 識別子 'Circle'

... これが私のクラスです。

#pragma once
#include <vector>

using namespace std;

class Shape
{

private:
    vector<Shape *> mStack;
public:
    Shape();
    ~Shape(void);

    virtual double Circle_area() = 0;   


};


*********************************************************

#pragma once
#include "Shape.h"

class Circle : public Shape
{
private:
    double m_r;
public:
    Circle();
    Circle(double r);
    ~Circle(void);

    double Create();
    double Circle_area();
};

ここで問題はどこにありますか?親クラス内にオブジェクトを作成するにはどうすればよいですか? 私が言おうとしていることを理解していただければ幸いです。助けてくれてありがとう。

4

2 に答える 2