声明在类中定义的结构

时间:2011-05-15 23:14:51

标签: c++ class struct

有一个标题文件:

class btCollisionWorld
{
public:

    struct RayResultCallback{
        int something; //example only
    };
)

我正在编写另一个headeer文件,我想使用指向btCollisionWorld ::RayResultCallback的指针,但我不想包含整个btCollisionWorld.h(我将它包含在我的cpp文件中)

如何正确申报?

我试过这个但它失败了:

class btCollisionWorld;
struct  btCollisionWorld::ClosestRayResultCallback;

2 个答案:

答案 0 :(得分:6)

如果没有定义包含类,则不能声明在类中定义的结构。您可以使用命名空间来实现类似的目标。

答案 1 :(得分:0)

将其他文件与btCollisionWorld.h分开是唯一合理的,如果它不依赖于特定的类btCollisionWorld,而只是在某些具有btCollisionWorld的某些属性的类上满足。在这种情况下,最好保持它的通用性,即:而不是使用btCollisionWorld*,你可能会这样做

template <typename btCollisionWorldT>
whatever-kind-of-structure-it-is {
  btCollisionWorldT * genericpointer;
}

如果结构是一个类,您可以稍后typedef,以便在此类的每个实际实例中btCollisionWorldTbtCollisionWorld

或者您可以使用void*,但这不太可能是理想的解决方案。