我有一个工厂方法,它要么返回一个对象,要么返回一个对象 baseclass
(derivedclass
的派生类baseclass
)。派生类有一个virtual void foo(int x)
接受一个参数的方法。baseclass
然而有virtual void foo()
没有论据。
在我的代码中,工厂方法返回一个 bar 类型的指针,该指针明确指向 class 的对象derivedclass
。但是,由于这仅在运行时才知道,我得到一个编译器错误,说它foo()
不带参数。我可以将此指针转换为类型的指针derivedclass
吗?
std::auto_ptr<baseclass> bar = classfactory::CreateBar(); //returns object of class derivedclass
bar->foo(5);
class baseclass
{
public:
virtual void foo();
}
class derivedclass : public baseclass
{
public:
virtual void foo(int x);
}