好的,所以我正在开展一个学校项目,我们将C ++转换为java,而且我已经相当远了。该项目是一个国际象棋游戏。这是代码:
package Chess;
import java.util.Enumeration;
public class ChessBoard{
/* This enum represents values for each of the possible "pieces" that can
* occupy a space on the chess board, including "blank" for a vacant space.
*/
public enum Type
{
BLANK,
PAWN,
BISHOP,
KNIGHT,
ROOK,
QUEEN,
KING;
public int getValue()
{
return this.ordinal();
}
public static Type forValue(int value)
{
return values()[value];
}
}
public class Coord
{
public short m_X;
public short m_Y;
}
public class GlobalMembers
{
/* These const values are used for identifying whether the "piece" occupying
* a chess board space is black, white, or in the case of a blank spot,
* "clear."
*/
public static final short BLACK = 0;
public static final short WHITE = 1;
public static final short CLEAR = 2;
public static final short CHECK_MOVE = 1; // this is a piece move "mode" designating an AI board evaluation
public static final short REAL_MOVE = 2; // this is a piece move "mode" designating an actual AI move
}
public class ChessPiece
{
/* The ctor for ChessPiece takes a piece type and color.
*/
public ChessPiece(Type type, short color)
{
this.m_type = type;
this.m_color = color;
this.m_moves = 0;
}
public void dispose()
{
}
/* This member function returns the chess piece type.
*/
public final Type getType()
{
return m_type;
}
/* This member function returns the chess piece color.
*/
public final short getColor()
{
return m_color;
}
/* This function is used to record a new movement of a piece. Movement tracking
* is necessary for evaluating validity of special piece moves like en passant
* capture and castling.
*/
public final void incrementMoves()
{
++m_moves;
}
/* Reduces the number of times a piece has been moved. Used for adjustment when
* a function incidentally increments the movement of a piece in a case where
* a board evaluation is taking place, and is not intended as an actual move.
*/
public final void decrementMoves()
{
--m_moves;
}
/* Returns the number of times a piece has been moved.
*/
public final int getMoves()
{
return m_moves;
}
private Type m_type = new Type(); // this variable holds the type of piece this object represents
private short m_color; // this variable holds the color of the piece, white or black
private int m_moves; // this variable holds the number of moves the piece has made
}
}
问题在于我开始
private Type m_type = new Type();
它声明“无法实例化Chessboard.Type类型”
现在我到处寻找here
正如您所看到的那样,程序与此程序非常不同,并且只要您引用程序中的Type,就会抛出所有这些程序。有谁知道如何解决这一问题?
答案 0 :(得分:2)
停止尝试实例化枚举类型。
例如,您可以将初始化写入以下内容:
private Type m_type = Type.BLANK;
答案 1 :(得分:1)
您无法实例化枚举类型的变量。
您应该将UNKNOWN添加到Type,然后使用默认值Type.UNKNOWN初始化m_type,然后在构造函数中将其设置为正确的值。
答案 2 :(得分:0)
Type
是一个枚举,而不是可用于实例化对象的类。详细了解枚举here。