-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 を作成し、次のようにコードを分離しました。

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

MyClass.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;
}

コンパイルしようとすると、エラーが発生します。

Undefined identifier goalNode; 
 //for the function goalDistance

このエラーが発生する理由と修正方法を説明してください。

編集:今、何も忘れていないことを願っています。

編集:評価を下げてくれた人たちに感謝します。私たちの何人かはあなたのような専門家ではなく、たとえ小さなエラーであっても見つけるのが難しいのです!

4

1 に答える 1

0

一見すると、このエラーには2つの理由が考えられます。

最も明白なもの:あなたのクラス定義は不完全です、それはあるべきです

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 に答える