0
我想有一个来自相同基类的类的对象的容器。看起来最好的方法是创建一个指向基类的指针容器,并将它们指向派生类对象。然而,我想要检索的对象并把它传递到被重载派生类全局函数:(RESP A,B)有没有办法让派生类的容器在检索时被识别为派生类而不是基类?
Class Base {};
Class A : public Base {};
Class B : public Base {};
double MyFunction(const A &a_object) {does things};
double MyFunction(const B &b_object) {does different things};
typedef boost::shared_ptr<Base> Ptr;
typedef std::vector<Ptr> PtrContainer;
int main()
{
PtrContainer MagicContainer;
//Fill MagicContainer with A's and B's
double result = MyFunction(*MagicContiner[0]); //Compiler can't resolve
//which MyFunction to use
}
我知道如果我提出的MyFunction基地虚拟成员函数这会工作,但我想保持全球MyFunction(或可能在一个单独的类)。我对C++很陌生,因此非常感谢任何帮助。
你可以把专门的行为放在虚拟方法后面吗?试图将非方法函数耦合到这样的类是不好的设计,并且会导致代码维护性差。如果可以的话,你真的需要课堂中所有特定于类的行为。 –