いくつかの関数を持つテンプレート/クラスを作成しようとしていますが、かなり初心者の問題のように見えます。簡単な挿入機能と値表示機能がありますが、値を表示しようとすると常にメモリアドレスのように見えますが(わかりません)、保存されている値を受け取りたいです(これに特定の例、int 2)。それを値に逆参照する方法がわかりません。または、完全に混乱しているだけなのかどうかはわかりません。ベクトルがより良い代替手段であることは知っていますが、この実装では配列を使用する必要があります。正直なところ、コードと何が起こっているのかをより完全に理解したいと思います。このタスクを実行する方法についての助けをいただければ幸いです。
出力例(毎回同じ方法でプログラムを実行):003358C0
001A58C0
007158C0
コード:
#include <iostream>
using namespace std;
template <typename Comparable>
class Collection
{
public: Collection() {
currentSize = 0;
count = 0;
}
Comparable * values;
int currentSize; // internal counter for the number of elements stored
void insert(Comparable value) {
currentSize++;
// temparray below is used as a way to increase the size of the
// values array each time the insert function is called
Comparable * temparray = new Comparable[currentSize];
memcpy(temparray,values,sizeof values);
// Not sure if the commented section below is necessary,
// but either way it doesn't run the way I intended
temparray[currentSize/* * (sizeof Comparable) */] = value;
values = temparray;
}
void displayValues() {
for (int i = 0; i < currentSize; i++) {
cout << values[i] << endl;
}
}
};
int main()
{
Collection<int> test;
int inserter = 2;
test.insert(inserter);
test.displayValues();
cin.get();
return 0;
}