我正在尝试编写一个具有一些功能的模板/类,但我遇到了一个看起来相当新手的问题。我有一个简单的插入函数和一个显示值函数,但是每当我尝试显示值时,我总是收到看起来像内存地址的东西(但我不知道),但我想接收存储的值(在这个特别的例子,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;
}