C++ 为什么它说表达式必须有指向对象类型的指针?我不知道';我不想使用指针。只有二维阵列,一切都不那么复杂

C++ 为什么它说表达式必须有指向对象类型的指针?我不知道';我不想使用指针。只有二维阵列,一切都不那么复杂,c++,visual-c++,C++,Visual C++,除了函数末尾的upalph函数外,我没有其他问题。 我分配数组边距的部分,以及我打印的下一行。错误出现在列下。它说表达式必须有一个指向对象类型的指针 #include <string> using namespace std; const int BL = 19; int siders = 8; void upalph(); //void sideNum(string boardBorder[BL][BL]) //{ // for (int ROW = 0; ROW < B

除了函数末尾的upalph函数外,我没有其他问题。 我分配数组边距的部分,以及我打印的下一行。错误出现在列下。它说表达式必须有一个指向对象类型的指针

#include <string>
using namespace std;

const int BL = 19;
int siders = 8;
void upalph();
//void sideNum(string boardBorder[BL][BL])
//{
//  for (int ROW = 0; ROW < BL; ROW++)
//  {
//      for (int COL = 0; COL < BL; COL++)
//      {
//          if (ROW >= 2 && ROW <= 16 && COL == 18 || ROW >= 2 && ROW <= 16 && COL == 0)
//          {
//              boardBorder[ROW][COL] = (int)siders; siders--;
//              cout << boardBorder[ROW][COL];
//          }
//      }
//  }
//}
void main()
{
    string boardBorder[BL][BL];

    for (int ROW = 0; ROW < BL; ROW++)
    {
        for (int COL = 0; COL < BL; COL++)
        {
            if (ROW >= 1 && ROW <= 17 && COL == 1 || ROW >= 1 && ROW <= 17 && COL == 17)
            {
                boardBorder[ROW][COL] = "|";
            }
            else if (ROW >= 1 && ROW % 2 == 0 && COL >= 2 && COL % 2 != 0 && ROW <= 17 && COL <= 16)
            {
                boardBorder[ROW][COL] = "|";
            }
            else if (ROW >= 1 && ROW % 2 != 0 && COL >= 2 && COL % 2 != 0 && ROW <= 17 && COL <= 16)
            {
                boardBorder[ROW][COL] = "+";
            }
            else if (ROW >= 1 && ROW % 2 != 0 && COL >= 2 && COL % 2 == 0 && ROW <= 17 && COL <= 16)
            {
                boardBorder[ROW][COL] = "-";
            }
            //else if (ROW >= 2 && ROW <= 16 && COL == 18 || ROW >= 2 && ROW <= 16 && COL == 0)
            //{
            //  boardBorder[ROW][COL] = sideNum; sideNum--;
            //}
            else
                boardBorder[ROW][COL] = " ";
        }
    }
    upalph(boardBorder[BL][BL]);
    //sideNum(boardBorder);
    for (int ROW = 0; ROW < BL; ROW++)
    {
        for (int COL = 0; COL < BL; COL++)
        {
            if (COL == 0)
                cout << endl;
            cout << " " << boardBorder[ROW][COL];
        }
    }
    cout<<endl<<endl;
}
void upalph(string boardBorder)
{
    for (int ROW = 0; ROW < BL; ROW++)
    {
        for (int col = 0; col < BL; col++)
        {
            if (ROW >= 2 && ROW <= 16 && col == 18 || ROW >= 2 && ROW <= 16 && col == 0)
            {
                boardBorder[ROW][col] = (int)siders; siders--;
                cout << boardBorder[ROW][col];
            }
        }
    }
}

#包括
使用名称空间std;
常数int BL=19;
内侧=8;
void upalph();
//void sideNum(字符串boardBorder[BL][BL])
//{
//for(int行=0;行//如果(ROW>=2&&ROW=2&&ROW=2&&COL%2!=0&&ROW=2&&COL%2!=0&&ROW=2&&COL%2==0&&ROW首先声明
upalph
不带任何参数,然后调用它来传递一个参数。并且传递的值超出了数组的界限。更不用说在
upalph
函数中使用
std::string
对象作为矩阵,但它不是。我不确定你想做什么,但你似乎跳过了课堂上的一些课程,或者书中的几章。
upalph(boardBorder[BL][BL]);
-但是,你之前声明该函数为
void upalph()
不带参数。这没有任何意义。另外,请记住,C样式数组很容易衰减为指针。也许您真正想要的是
std::array
std::vector
。。