我有以下问题:
我有一个 Pawn,它站在一个字段上。所以我有 Class Pawn 和 Class Field。我想从 Field 访问站在它上面的 Pawn,我想从 Pawn 访问它所在的 Field。
所以我有课:
class Pawn;
class Player;
class Field;
class PlayerList;
class Pawn
{
public:
int intID;
Player* plrPlayer;
Field* fldField;
...
int getPosition()
{
//gets the ID of the Field it stands on
return fldField->intID; //Here i get the error
}
}
class Field
{
public:
Pawn* pwnPawn;
int intID;
Field()
{
intID = -1;
}
Field(int intIDParam)
{
intID = intIDParam;
}
};
g++ 说
Error: invalid use of incomplete type "class Field"
Error: Forward declaration of class Field
或者
main.cpp: In Elementfunktion »int Pawn::getPosition()«:
main.cpp:42:24: Fehler: falsche Benutzung des unvollständigen Typs »class Field«
main.cpp:10:7: Fehler: Vorwärtsdeklaration von »class Field«
除了在类之外声明事物之外还有其他方法吗,或者我真的必须在需要它们之前声明它之外的所有方法/成员吗?
我能做些什么?谢谢你。
编辑:谢谢,但我现在尝试将它分成一个 .h 和一个 .cpp 文件。稍后我将为每个类使用一个 .h 和一个 .cpp 文件,但现在我只需
头文件.h
#ifndef _HEADERS_
#define _HEADERS_
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <vector>
using namespace std;
class Pawn;
class Player;
class Field;
class PlayerList;
class Pawn
{
public:
int intID;
Player* plrPlayer;
Field* fldField;
//Constructors....
int getPosition();
...
};
#endif
实现.cpp
#ifndef _IMPLEMENTATIONS_
#define _IMPLEMENTATIONS_
#include "headers.h"
//Pawn.cpp
int Pawn::getPosition()
{
return fldField->intID;
}
...
#万一
在 main.cpp 我包括“implementations.cpp”
我得到错误
In function Pawn::getPosition
multiple definition of Pawn::getPosition
我做错了什么?