令牌之前'['预期的非限定 id

Expected unqualified-id before '[' token

本文关键字:id 令牌      更新时间:2023-10-16

我知道这个错误通常是语法错误,但我似乎没有发现这个代码有任何错误。有人能帮我指出吗?以下是我得到的错误:

deli.cc:10:7:错误:在"["标记之前应为不合格的idint[]myCashierNums;^deli.cc:11:7:错误:在"["标记之前应为不合格的idint[]myOrderNums;^

以下是我在Ubuntu 14.04 64位上使用g++编译的程序。

#include <iostream>
#include <stdlib.h>
using namespace std;
class SandwichBoard {
  //private:
    int myMaxOrders;
    int [] myCashierNums;
    int [] myOrderNums;
  //public:
    SandwichBoard (int maxOrders) {
      myMaxOrders = maxOrders;
      myCashierNums = new int [maxOrders];
      myOrderNums = new int [maxOrders];
      // All values initialized to -1
      for (int i = 0; i < maxOrders; i++){
        myCashierNums[i] = -1;
        myOrderNums[i] = -1;
      }
    }
    // For debugging purposes
    void printMyOrders() {
      for (int i = 0; i < maxOrders; i++){
        cout << "Cashier " << myCashierNums[i] << ", ";
        cout << "Order " << myOrderNums[i] << endl;
      }
    }
    int getMaxOrders () { return myMaxOrders; }
};
void cashier(void *in) {
}
void sandwich_maker(void *in) {
}
int main(int argc, char *argv[]) {
}

这是C++,而不是Java!像这样声明数组:

int myCashierNums[1000];
int myOrderNums[1000];

请注意,C++中的数组在编译时必须有一个大小。在上面的例子中,它是1000。

修改:

int myMaxOrders;
int* myCashierNums;
int* myOrderNums;

添加:

~SandwichBoard() {
    if (myMaxOrders) {
       delete [] myCashierNums;
       delete [] myOrderNums;
    }
}