gpt4 book ai didi

c++ - [填空]左边必须有类/结构/union 错误

转载 作者:行者123 更新时间:2023-11-30 04:22:46 26 4
gpt4 key购买 nike

所以我有这一行:

ArrayList<Operation> operations();

现在,这是我的 ArrayList 类和我的操作结构:

typedef struct Operation {
char key;
int value;
} Operation;
template <class DT>
class ArrayList
{
private:
int _capacity;
int _size;
DT* elements;
public:
ArrayList();
~ArrayList();
void insert (DT&);
DT& operator[] (int);
};
ArrayList<DT>::ArrayList()
{
_capacity = 10;
_size = 0;
elements = new DT[10];
}

我认为没有必要发布其他方法的代码,因为那里没有发生错误。但是,如果您想看到它们,您只需要提出要求即可。

现在,每次我尝试做类似的事情

operations.insert(x) //assuming x is a struct that exists.

operations[i].key; //assuming i is a declared and initialized index.

它给了我error C2228: left of (fill in the blank) must have class/struct/union错误 C2109:下标需要数组或指针类型

我之前看过一个关于这个问题的讨论帖,我认为我的问题是编译器将我提供的第一行代码作为声明,但没有进行初始化。但是我没有看到解决方案。在我的脑海中,唯一的解决方案是使它成为一个指针并使用 = new ... 但在我的脑海中关键字 new 是肮脏的同义词所以我只是想做它是一个对象。解决这个问题的方法是什么?或许我错了,这与对象类型是 struct 有关,因为这是我第一次使用 struct

最佳答案

这一行:

ArrayList<Operation> operations();

声明一个返回 ArrayList<Operation> 的函数

这通常称为 most vexing parse .

申报您的ArrayList<Operation> , 去掉括号:

ArrayList<Operation> operations;

关于c++ - [填空]左边必须有类/结构/union 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com