0

I have two c++ class bellow. I want get LHContactInfo property from LHSceneSubclass but I can get nothing.So How can I do with this?

#ifndef __LEVELHELPER_API_CONTACT_INFO_H__
#define __LEVELHELPER_API_CONTACT_INFO_H__

#include "LHConfig.h"
#if LH_USE_BOX2D

#include "cocos2d.h"

class b2Contact;

using namespace cocos2d;

class LHContactInfo
{
public:
    
    LHContactInfo();
    virtual ~LHContactInfo();
    
    Node*       nodeA;
    Node*       nodeB;
    std::string nodeAShapeName;
    std::string nodeBShapeName;
    int         nodeAShapeID;
    int         nodeBShapeID;
    
    Point       contactPoint;
    float       impulse;
    
    b2Contact*  box2dContact;
};

#endif

#endif //__LEVELHELPER_API_CONTACT_INFO_H__


#include "LHContactInfo.h"

#if LH_USE_BOX2D

#include "Box2d/Box2d.h"

LHContactInfo::LHContactInfo(){
    nodeA = NULL;
    nodeB = NULL;
    box2dContact = NULL;
}
LHContactInfo::~LHContactInfo(){
    nodeA = NULL;
    nodeB = NULL;
    box2dContact = NULL;
}

#endif

#ifndef __LH_SCENE_SUBCLASS_H__
#define __LH_SCENE_SUBCLASS_H__

#include "cocos2d.h"
#include "LevelHelper2API.h"

class LHContactInfo;
class LHSceneSubclass : public LHScene
{
public:
    static cocos2d::Scene* createScene();

    LHSceneSubclass();
    virtual ~LHSceneSubclass();
    
    bool initWithContentOfFile(const std::string& plistLevelFile);
    virtual bool shouldDisableContactBetweenNodes(Node* nodeA, Node* nodeB);
    virtual void didBeginContact(const LHContactInfo& contact);
    virtual void didEndContact(const LHContactInfo& contact);
};

#endif // __LH_SCENE_SUBCLASS_H__


//file.cpp

void LHSceneSubclass::didBeginContact(const LHContactInfo& contact){
 if(contact.nodeA->getName() == "box1"){// error invalid use of incomplete type 'const class 
 LHContactInfo'

 }
}
void LHSceneSubclass::didEndContact(const LHContactInfo& contact){
    CCLOG("DIDENDCONTACT...\n");
}

I want to do like contact.nodeA from LHContactInfo in didBeginContact function but compile error ->error invalid use of incomplete type 'const class LHContactInfo'

Note:: - Compile with android NDK 10c

user2938465
  • 81
  • 1
  • 5

1 Answers1

1

The class LHContactInfo is only declared (ie, know by name), due to your forward declaration. However, the compiler needs the class definition. You need to include the file containing the class definition.

Matthias J. Sax
  • 59,682
  • 7
  • 117
  • 137
  • you mean I need to include LHContactInfo.h to LHSceneSubclass right? if so, I done with this but still error. – user2938465 Aug 05 '15 at 13:54
  • Yes. This should actually work. Did your remove forward declaration, too. Furthermore, what about `LH_USE_BOX2D` -- is it defined? Otherwise the class definition is not included. – Matthias J. Sax Aug 05 '15 at 14:26