假设我们有:

class Base {…}
class A : public Base {…}
class B : public Base {…}
是否可以将泛型方法设置为参数类型:
myMethod([typei'mlookingfor] c) {}
这样我就可以在不重载方法的情况下将Base,A和B传递给myMethod()
并使其与引用和指针一起工作?

最佳答案

如果对基类的指针或引用适用于您,则只需使用以下方法:

void myMethod(Base& c) {}
A a;
B b;
myMethod(a);  //OK
myMethod(b);  //OK

请注意,您必须使用引用或指针来防止对象 slice 。如果方法是myMethod(Base c),则将丢失派生对象的类型信息。

如果没有,您可以使用模板
template<typename T>
void myMethod(T& c)
{
}
A a;
B b;
myMethod(a);
myMethod(b);

关于c++ - 是否可以将方法参数的类型定义为类还是任何派生类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11715642/

10-13 07:00