-1

我有一个 C++ 类 main.cpp,我在其中创建了一个如下类:

class MapSearchNode
{
 public:
unsigned int x;  // the (x,y) positions of the node
unsigned int y; 

MapSearchNode() { x = y = 0; }
MapSearchNode( unsigned int px, unsigned int py ) { x=px; y=py; }

float goalDistance( MapSearchNode &nodeGoal );

};
float MapSearchNode::goalDistance( MapSearchNode &nodeGoal )
{
float xd = fabs(float(((float)x - (float)nodeGoal.x)));
float yd = fabs(float(((float)y - (float)nodeGoal.y)));

return xd + yd;
}

int main{
    //treatment
}

它工作正常,但后来我想分离 MyClass 类,所以我创建了一个 MyClass.h 和 MyClass.cpp 并分离了如下代码:

我的类.h

#ifndef _MAPSEARCHNODE_H
#define _MAPSEARCHNODE_H


class MapSearchNode
{
public:
    MapSearchNode();
MapSearchNode( unsigned int px, unsigned int py );

public:
unsigned int x;  
unsigned int y; 
    float goalDistance( MapSearchNode &goalNode );

};
#endif

我的类.cpp

#include "MapSearchNode.h"

MapSearchNode::MapSearchNode():x(0), y(0))
{}
MapSearchNode::MapSearchNode( unsigned int px, unsigned int py ):x(px), y(py) 
{}

float MapSearchNode::goalDistance(MapSearchNode &goalNode ){
float xDistance = fabs(float(((float)x - (float)goalNode.x)));
float yDistance = fabs(float(((float)y - (float)goalNode.y)));

return xDistance + yDistance;
}

Bur当我尝试编译时出现错误:

Undefined identifier goalNode; 
 //for the function goalDistance

有人可以解释一下为什么我会收到这个错误以及如何解决它。

编辑:我希望我现在没有忘记任何事情。

编辑:非常感谢那些低估的人。我们中的一些人不是像您这样的专家,他们很难看到错误,即使是很小的错误!

4

1 回答 1

0

乍一看,这个错误有两个可能的原因:

最明显的一个:你的类定义不完整,应该是

class MyClass
{
public:
    unsigned int x; 
    unsigned int y; 

    MyClass() { x = y = 0; }
    MyClass( unsigned int px, unsigned int py ) { x=px; y=py; }

    float Calculate( MyClass &myClass );
}; // semicolon

float MyClass::Calculate( MyClass &myClass )
{
     if(x<myClass.x)
             ....//treatment
}

此外,请确保您的源文件 ( .cpp) 包含您的头文件 ( .h)

所以这两个文件看起来像这样:

// .h file
class MyClass
{
public:
    unsigned int x; 
    unsigned int y; 

    MyClass() { x = y = 0; }
    MyClass( unsigned int px, unsigned int py ) { x=px; y=py; }

    float Calculate( MyClass &myClass );
};

// .cpp file
#include "MyClass.h"
//definition of constructors
float MyClass::Calculate( MyClass &myClass )
{
   if(x<myClass.x)
             ....//treatment

}
于 2012-01-29T12:54:19.320 回答