CDrawView
クラスに次の列挙型宣言があります。
enum shape{line, rect, elli};
Shapemaker と呼ばれる私の他のクラスには、CDrawView
クラスから列挙型を取り込んで評価する関数があります。
Shape* Shapemaker::shapeCreate(CDrawView::shape)
{
if(CDrawView::shape.line == 0)
return new Line();
else if(CDrawView::shape.rect == 1)
return new Rect();
else if (CDrawView::shape.ellip == 2)
return new Ellip();
}
whereShapemaker::shapeCreate(current_shape)
はcurrent_shape
の単なるインスタンスですenum shape
。
shape current_shape;
これにより、コンパイルエラーが発生します。
error C2653: 'CDrawView' : is not a class or namespace name
Shapemaker.h(7):
これが列挙型と関数を使用したり、列挙型を比較したりする正しい方法であるかどうかは完全にはわかりません。
error C2061: syntax error : identifier 'shape'
'Shapemaker::shapeCreate' : function does not take 1 arguments
CDrawView.h
class CDrawView : public CScrollWindowImpl<CDrawView>
{
public:
CDrawView();
enum shape{line, rect, elli};
shape current_shape;
//...
};
ファイル定義Shapemaker::shapeCreate()
は#include "CDrawView.h"
一番上にあります。