【问题标题】:Expected unqualified-id before '[' token'[' 标记之前的预期不合格 ID
【发布时间】:2015-02-13 04:43:24
【问题描述】:

我知道这个错误通常是语法错误,但我似乎找不到这段代码有什么问题。谁能帮我指出来?以下是我遇到的错误:

deli.cc:10:7: 错误:'[' 标记之前的预期 unqualified-id int [] myCashierNums; ^ deli.cc:11:7: 错误: '[' 标记之前的预期 unqualified-id int [] 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 混淆了。
  • 由于尺寸看起来是动态的,std::vector&lt;int&gt; 是更好的选择。

标签: c++ g++


【解决方案1】:

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

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

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

【讨论】:

  • 啊,我知道我最近使用 Java 太多了。谢谢,我将接受 T.C. 的建议并使用 std::vector 因为大小必须是动态的。
  • 我不敢相信我做到了...谢谢你的回答,我会在我的电脑上敲几个小时。这个答案非常好!
【解决方案2】:

修改:

int myMaxOrders;
int* myCashierNums;
int* myOrderNums;

添加:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多