我有一个工厂方法,它要么返回一个对象,要么返回一个对象 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);
}