指向具有模板继承的基类的指针

时间:2016-10-10 04:18:38

标签: c++ templates inheritance smart-pointers

我有一个模板化接口,各种派生模板化类,与派生模板化类相关联的各种函数,以及一个std容器,据说包含指向模板化接口实例的指针:

class Collider<T> {}
class BoxCollider<T> : public Collider<T> {}
class CircleCollider<T> : public Collider<T> {}

bool intersects(BoxCollider<T> b1, BoxCollider<U> b2) { ... }
bool intersects(BoxCollider<T> b, CircleCollider<U> c) { ... }
bool intersects(CircleCollider<T> b, BoxCollider<U> c) { ... }
bool intersects(CircleCollider<T> c1, CircleCollider<U> c2) { ... }

我想做这样的事情:

int main() {
    std::vector<std::shared_ptr<Collider<float>>> colliders;
    CircleCollider<float> player(...);
    ...
    for(auto it = colliders.begin(); it != colliders.end(); it++) {
        auto collider = *it;
        if(intersects(player, *collider) {
            // Do something
        }
    }
}

但我无法理解为什么(明显的类型!=真实的类型......),我尝试了很多其他方法来做我需要的东西(比如动态铸造指针)但我仍然可以&# 39;做我需要的......请有人告诉我最好的方法是什么?

非常感谢=)

0 个答案:

没有答案