Как импортировать класс [target-c ++], который импортирует класс [c ++] в класс [jective-c]? - PullRequest
1 голос
/ 13 марта 2011

У меня 3 файла.

// A.h/A.m, Objective-C.
#import "B.h"
@interface A
{
  B* b;
}
@end
// Uses instance method of B in implementation.



// B.h/B.mm, Objective-C++.
#import "C.h"
@interface B
{
  C c;  // c is declared without pointer.
}
@end
// Uses member methods of C in implementation.



// C.h/C.cpp, C++.
#include <Box2D/Box2D.h>  // C++ library.    
class   C
{
    private:
    b2World     world;
    b2Body*     ground;
    b2Body*     ball;

    public:

    PhysicsSimulator();
    ~PhysicsSimulator();

    void    setupWorld();
    void    cleanupWorld();

    void    tickWorld();
};
// One file of Box2D library include <cassert>

Это делает ошибку во время компиляции.

/Users/eonil/Work/Trials/Box2DTest/Library/Box2D/Common/b2Settings.h:22:10: fatal error: 'cassert' file not found [1]

Похоже, я должен сделать что-то особенное при импорте Objective-C ++ из Objective-C. Но я не могу понять, что это такое. И я не уверен, что даже это возможно или нет. Что это? ..

1 Ответ

4 голосов
/ 13 марта 2011

Не включайте Ch в Bh. Скорее, говорите struct C;.Это позволит вам заранее объявить тип способом, совместимым с Objective-C.В состав mm входит C.h.

...