だから私はこの行を持っています:
ArrayList<Operation> operations();
さて、これは私の ArrayList クラスと私の Operation 構造体です:
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
とを与えますerror C2109: subscript requires array or pointer type
この問題に関する以前のスレッドを見たことがありますが、私の問題は、コンパイラが宣言として提供したコードの最初の行を受け取り、初期化を行わないことだと思います。しかし、私はこれに対する解決策を見ませんでした。私の頭の中で唯一の解決策は、それをポインターにして使用すること= new ...
ですが、私の頭の中でキーワードnew
は意地悪の同義語であるため、単にオブジェクトにしたかったのです。これを回避する方法は何ですか?あるいは、私が間違っているのかもしれません。struct
これは、私が s を扱うのはこれが初めてなので、オブジェクト タイプが a であることと関係がありますstruct
。