Search code examples
c++levelhelper

forward declaration of 'const class LHContactInfo' error when try to access it property


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


Solution

  • 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.