【发布时间】:2016-04-09 13:54:50
【问题描述】:
我有类Presenter,它继承自ModelListener。
class Model;
class ModelListener
{
public:
ModelListener() : model(0) {}
virtual ~ModelListener() {}
void bind(Model* m) { model = m; }
protected:
Model * model;
};
另外,我有一个实例Presenter presenter。当我调用presenter->model->PrintName() 时,它当然不会编译,因为model 受到presenter 的保护。但是,如果我再像这样将Model * model 更改为公开
class Model;
class ModelListener
{
public:
ModelListener() : model(0) {}
virtual ~ModelListener() {}
void bind(Model* m) { model = m; }
//protected:
Model * model;
};
我明白了:
MyView.cpp:错误:不完整类型“类模型”的无效使用 演示者->模型->打印名称(); ModelListener.hpp:错误:“模型类”的前向声明。
为什么我在转到 public 时收到此错误,而不是在 protected 时收到此错误?
【问题讨论】: