Объявите структуру, определенную в классе - PullRequest
1 голос
/ 16 мая 2011

Имеется заголовочный файл:

class btCollisionWorld
{
public:

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

Я пишу другой файл заголовка, в котором я хочу использовать указатель на btCollisionWorld ::RayResultCallback, но я не хочу включать целые btCollisionWorld.h (Я включу его в мой файл cpp)

Как мне правильно его объявить?

Я пробовал это, и это не удалось:

class btCollisionWorld;
struct  btCollisionWorld::ClosestRayResultCallback;

Ответы [ 2 ]

6 голосов
/ 16 мая 2011

Вы не можете объявить структуру, определенную внутри класса, не определив содержащий класс.Вы можете использовать пространство имен для достижения аналогичной цели.

0 голосов
/ 16 мая 2011

Разумно хранить этот другой файл отдельно от btCollisionWorld.h, если он на самом деле не полагается на определенный класс btCollisionWorld, а скорее просто на некоторый класс с определенными свойствами, которые удовлетворяет btCollisionWorld. В этом случае, возможно, было бы лучше сохранить его универсальным, то есть вместо использования btCollisionWorld* вы можете сделать

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

Если структура является классом, вы можете позже typedef сделать это так, чтобы btCollisionWorldT было btCollisionWorld в каждом фактическом экземпляре этого класса.

В качестве альтернативы вы можете использовать void*, но это вряд ли будет идеальным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...