我在阅读一篇C++60写的中国象棋代码时,有个问题一直搞不清楚,就是数组形参的传递问题:明明在一函数里有数组形参是这一种,而实际调用时却是不同的数组,虽然两种数组都是十行九列,但是DELPHI里动会造成形参是不同类型的错误呀;如:SearchAGoodMove(BYTE position[10][9]) 这里的数组是position,(C++可以直接在形参里定义一个数组,DELPHI是不行的吧,DELPHI里必须先定义一个数组类型吧)这个函数实际调用时却是这样的:
 m_pSE->SearchAGoodMove(m_ChessBoard);
m_chessBoard是预先定义好的数组: BYTE m_ChessBoard[10][9];这两个数组明明是不同类型的呀,怎么可以调用呢?如果译成DELPHI,应该如何处理呢?像这样的情况还有很多,如: virtual int Eveluate(BYTE position[10][9], BOOL bIsRedTurn);
评价函数传入的数组也是POSITION,而实际应用却是curposition,如下: return m_pEval->Eveluate(CurPosition, (m_nMaxDepth-depth)%2);如蒙回复,不胜感激!

解决方案 »

  1.   

    BYTE position[10][9]) 
    BYTE m_ChessBoard[10][9]; 
    是同一类型 
      

  2.   


     是不是同一类型,就看在DELPHI里如何定义了type p=array [0..9,0..8] of byte;position,m_ChessBoard:p;这样两者不就是同一类型了?如果直接定义:
    position: array [0..9,0..8] of byte;
    m_ChessBoard: array [0..9,0..8] of byte;
    会是同一类型?
      

  3.   


    type
      TDoubleArray=array[0..8] of array [0..9] of Byte;
    var
      position,m_ChessBoard:TDoubleArray; 
     
    Delphi认为position,m_ChessBoard是一个类型。 position: array [0..9,0..8] of byte; 
    m_ChessBoard: array [0..9,0..8] of byte;
    Delphi认为position,m_ChessBoard不是一个类型。Delphi就是这样,没处讲理
      

  4.   

    C++ 和 DELPHI 细微区别,知道就行了,