www.un.org/Depts/DGACM/index_spanish.htm 我如何动态地确定与另一个类别相关的类别?
我提出了一个解决办法,唯一的问题是,我最终必须使用一个定义,必须在所有衍生类别中使用这一定义。
www.un.org/Depts/DGACM/index_spanish.htm 是否有更简单的方式来做到这一点,就不必再加一门课?
值得注意的是:该阶级和相关班级将永远都有各自的基类,不同班级可以分享相关班级,例如,我喜欢控制班级有自己的观点。
这就是我现在的情况。 我必须放弃的唯一事情是开关,但我只想让开关,而我只需要加上背弃义和改变它。
#include <iostream>
#include <string>
class model
{
public:
model( int id ) : id(id) {}
int id;
};
class view
{
public:
view( model *m ) {}
virtual std::string display()
{
return "view";
}
};
class otherView : public view
{
public:
otherView( model *m ) : view(m) {}
std::string display()
{
return "otherView";
}
};
class control
{
public:
control( model *m ) : m_(m), v_( createRelated() ) {}
~control()
{
delete v_;
}
std::string display()
{
if ( v_ )
return v_->display();
return "No view";
}
view *createRelated()
{
switch( m_->id )
{
case 0:
return new view( m_ );
case 1:
return new otherView( m_ );
default:
return NULL;
}
}
model *m_;
view *v_;
};
int main( void ) {
model m(0);
model om(1);
model nm(2);
control c1( &m );
control c2( &om );
control c3( &nm );
std::cout << c1.display() << std::endl;
std::cout << c2.display() << std::endl;
std::cout << c3.display() << std::endl;
}