小编san*_*e11的帖子

c ++ std :: bind重绑定函数

如果我绑定这样的函数,在绑定时使用占位符

std::bind(memberFunctionPointer, objectPointer, _1, _2);
Run Code Online (Sandbox Code Playgroud)

那么以后可以"重新绑定"它来替换部分/全部占位符,但是不调用函数吗?我希望能够传入一些参数然后存储它,以便稍后调用.(延迟回拨)

c++ bind c++11

5
推荐指数
1
解决办法
596
查看次数

C++将基类指针转换为派生类,不知道派生类

我有各种类型的碰撞器类(SphereCollider、AABBCollider 等),它们都继承自基类 Collider。我使用指向基类的指针将它们存储在 std::vector 中。

std::vector<std::shared_ptr<Collider>> colliders;
Run Code Online (Sandbox Code Playgroud)

然后我有各种函数来确定对撞机是否彼此相交。

bool Colliding(const SphereCollider& colliderOne, const SphereCollider& colliderTwo);
bool Colliding(const AABBCollider& colliderOne, const AABBCollider& colliderTwo);
bool Colliding(const AABBCollider& colliderOne, const SphereCollider& colliderTwo);
bool Colliding(const SphereCollider& colliderOne, const AABBCollider& colliderTwo);
Run Code Online (Sandbox Code Playgroud)

我的想法是简单地遍历碰撞器向量,然后将每个碰撞器与列表中的所有其他碰撞器进行比较。

for (unsigned int a = 0; a < colliders.size(); ++a)
{
    for (unsigned int b = a + 1; b < colliders.size(); ++b)
    {
        // Store the two colliders we're current comparing
        std::shared_ptr<Collider> colliderOne = colliders[a];
        std::shared_ptr<Collider> colliderTwo = colliders[b];

        // Somehow cast …
Run Code Online (Sandbox Code Playgroud)

c++ pointers casting base-class derived-class

5
推荐指数
1
解决办法
1954
查看次数

标签 统计

c++ ×2

base-class ×1

bind ×1

c++11 ×1

casting ×1

derived-class ×1

pointers ×1