C++ [填空]左侧必须有类/结构/联合错误

C++ [填空]左侧必须有类/结构/联合错误,c++,C++,所以我有一句话: ArrayList<Operation> operations(); 或 它给出了错误C2228:left of(填空)必须具有class/struct/union 和错误C2109:下标需要数组或指针类型 我以前看过一个关于这个问题的线程,我认为我的问题是编译器将我提供的第一行代码作为声明,但没有初始化。 然而,我没有看到解决这个问题的办法。在我的头脑中,唯一的解决办法是把它变成一个指针,并使用=new…,但在我的头脑中,关键字new是肮脏的同义词,所以我只想把

所以我有一句话:

ArrayList<Operation> operations();

它给出了
错误C2228:left of(填空)必须具有class/struct/union
错误C2109:下标需要数组或指针类型

我以前看过一个关于这个问题的线程,我认为我的问题是编译器将我提供的第一行代码作为声明,但没有初始化。 然而,我没有看到解决这个问题的办法。在我的头脑中,唯一的解决办法是把它变成一个指针,并使用
=new…
,但在我的头脑中,关键字
new
是肮脏的同义词,所以我只想把它变成一个对象。解决这个问题的办法是什么? 或者我错了,这与对象类型是
struct
有关,因为这是我第一次使用
struct
s

ArrayList<Operation> operations();
ArrayList操作();
声明一个函数,该函数返回
ArrayList

这通常被称为

要声明您的
ArrayList
,请删除括号:

ArrayList<Operation> operations;
ArrayList操作;

我喜欢最烦人的解析。搜索这个词,你会发现500个重复项。虽然你不需要提供所有代码,但两个例子中的
操作的实际声明很重要。@chris yup,我读了很多,但几乎看不到我需要的答案。@Yokhen,是的,我想意识到这是一个函数就足够了,因为它通常只是偶然的。我猜不知道如何默认构造它和我见过的每一个都有点不同。我知道,那么我如何用默认构造函数初始化它呢?这就是我想做的,不仅仅是宣布。哇,魔术!所有的错误都消失了。谢谢。虽然这是唯一的一个,但最好的答案是:DThis并不是最烦人的解析示例。它只是一个函数声明。更改解析规则以消除最麻烦的解析不会改变这一点。请更仔细地查看链接中的示例。
operations[i].key; //assuming i is a declared and initialized index.
ArrayList<Operation> operations();
ArrayList<Operation> operations;