多级接口-返回指向基本接口的指针 在C++中,有多个接口级别是安全的,但是只返回指向基的指针,然后再将它抛在后面?
例如:多级接口-返回指向基本接口的指针 在C++中,有多个接口级别是安全的,但是只返回指向基的指针,然后再将它抛在后面?,c++,interface,C++,Interface,例如: class ILight { virtual vec3 Colour() = 0; virtual void Colour(vec3 colour) = 0; }; class ISpotlight : public ILight { virtual vec3 Position() = 0; } 我在现场安装了ISpotlight。在工厂中,我有一个功能: ILight *CreateSpot() { return new Spot(); } 如果我
class ILight
{
virtual vec3 Colour() = 0;
virtual void Colour(vec3 colour) = 0;
};
class ISpotlight : public ILight
{
virtual vec3 Position() = 0;
}
我在现场安装了ISpotlight。在工厂中,我有一个功能:
ILight *CreateSpot()
{
return new Spot();
}
如果我以后想使用它,我可以静态\u cast
。原因是我可以有不同类型的灯
在C++中,有多个接口级别是安全的,但是只返回基类,然后再将其丢弃?
对
如果我以后想用它,我可以用静态的
我建议不要使用static\u cast
。我建议使用dynamic\u cast
,检查强制转换是否成功,并且仅当dynamic\u cast
成功时才使用指针
但只返回指向基指针的指针,然后在以后强制转换它
这表明在除少数情况外的所有情况下都存在设计错误(例如,命名对象的缓存)。如果函数总是返回
ISpotLight*
,那么将ILight*
设置为返回类型而不是ISpotLight*
,会有什么好处?ILight
需要虚拟析构函数