【发布时间】:2013-03-19 10:31:34
【问题描述】:
我不明白为什么视图给我一个非静态成员引用必须是相对于特定对象的错误。
CDrawView::Shape 是我在CDrawView 上声明的枚举
enum shape{line, rect, elli};
shape current_shape;
这是我的另一门课
class Shapemaker
{
public:
CDrawView view;
static void Create(CDrawView::shape )
{
if(view.current_shape == view.line)
{
view.m_shape.reset(new Line());
}
else if(view.current_shape == view.rect)
{
view.m_shape.reset(new Rect());
}
}
}
避免此错误的最佳做法是什么
【问题讨论】:
-
你需要了解静态成员和非静态成员的区别。基本解决方案是 (a) 使您的成员函数非静态,或 (b) 使您的成员变量静态。