Ich habe Klasse Presenter
welche erbt von ModelListener
.Dereferenzierung Objekt der Vorwärts deklarierten Klasse
class Model;
class ModelListener
{
public:
ModelListener() : model(0) {}
virtual ~ModelListener() {}
void bind(Model* m) { model = m; }
protected:
Model * model;
};
Ich habe auch eine Instanz . Wenn ich presenter->model->PrintName()
anrufe, kompiliert es natürlich nicht, da model
geschützt ist zu presenter
. Aber wenn ich dann weiter Model * model
wie diese für die öffentliche ändern
class Model;
class ModelListener
{
public:
ModelListener() : model(0) {}
virtual ~ModelListener() {}
void bind(Model* m) { model = m; }
//protected:
Model * model;
};
Ich kapier:
MyView.cpp: error: invalid use of incomplete type 'class Model' presenter->model->PrintName(); ModelListener.hpp: error: forward declaration of 'class Model'.
Warum ich diese Fehlermeldung erhalten, wenn public
gehen und nicht, wenn protected
?