好的,所以没有详细说明为什么我正在写这个类,在这里。C++数组类的问题
template<class aType>
class nArray
{
public:
aType& operator[](int i)
{
return Array[i];
}
nArray()
{
aType * Array = new aType[0];
_Size = 0;
_MaxSize = 0;
_Count = 0;
}
nArray(int Count)
{
aType * Array = new aType[Count*2]();
_Size = Count;
_MaxSize = Count * 2;
_Count = 0;
}
int Resize(int newSize)
{
aType *temp = new aType[newSize*2];
for(int i=0;i<_Count;i++)
{
temp[i] = Array[i];
}
delete[] Array;
aType * Array = new aType[newSize*2];
for(int i=0;i<_Count;i++)
{
Array[i] = temp[i];
}
delete [] temp;
_Size = newSize;
_MaxSize = newSize*2;
return 0;
}
int Push_Back(aType Item)
{
if(_Count+1 >= _Size)
{
Resize(_MaxSize);
}
Array[_Count] = Item;
_Count++;
return _Count - 1;
}
aType GetAt(int Index, int &ret)
{
if(Index > _Size-1)
ret = 1;
return aType();
ret = 0;
return Array[Index];
}
private:
int _Size;
int _Count;
int _MaxSize;
aType * Array;
};
它应该是一个std :: Vector类型的对象,没有所有的花里胡哨。 问题是,它似乎没有工作。
我基本上是去
nArray<string> ca = nArray<string>(5);
ca.Push_Back("asdf");
ca.Push_Back("asdf2");
int intret = 0;
cout << ca.GetAt(1,intret);
开始我得到一个访问冲突读取位置错误,它击中的的push_back函数的行
Array[_Count] = Item
。
问题似乎是它没有将Array对象视为内存中的数组。
我花了一段时间来逐步完成代码,我不知道还有什么要说的,它没有正确操作。我不知道该怎么说。我只是希望有人会阅读我的代码,并指出我犯了一个愚蠢的错误,因为我确信这就是它的全部内容。 更新 所以,现在我改变了nArray(),nArray(诠释计数)数组的初始化3,并调整其大小(INT新尺寸)
template<class aType>
class nArray
{
public:
aType& operator[](int i)
{
return Array[i];
}
nArray()
{
Array = new aType[0];
_Size = 0;
_MaxSize = 0;
_Count = 0;
}
nArray(int Count)
{
Array = new aType[Count*2]();
_Size = Count;
_MaxSize = Count * 2;
_Count = 0;
}
int Resize(int newSize)
{
aType *temp = new aType[newSize*2];
for(int i=0;i<_Count;i++)
{
temp[i] = Array[i];
}
delete[] Array;
Array = new aType[newSize*2];
for(int i=0;i<_Count;i++)
{
Array[i] = temp[i];
}
delete [] temp;
_Size = newSize;
_MaxSize = newSize*2;
return 0;
}
int Push_Back(aType Item)
{
if(_Count+1 >= _Size)
{
Resize(_MaxSize);
}
Array[_Count] = Item;
_Count++;
return _Count - 1;
}
aType GetAt(int Index, int &ret)
{
if(Index > _Size-1)
ret = 1;
return aType();
ret = 0;
return Array[Index];
}
private:
int _Size;
int _Count;
int _MaxSize;
aType * Array;
};
这是我的代码怎么回事了。无论如何,最初的问题是,当我尝试访问数组中的特定元素时,它只是访问第一个元素,并且它似乎没有添加元素eather。它似乎并不把Array当作一个数组。
“这似乎并没有工作,”没有足够的信息。能否请您解释你做了什么,是什么导致你期望得到你真正得到了什么?谢谢。什么 – moonshadow 2010-09-14 10:54:45
请问什么叫“铃铛和口哨“你试图避免需要这个班?我仍然认为你会b使用'std :: vector'更有效率。 – tenfour 2010-09-14 11:02:54
@tenfour我讨厌成为家伙,但这些都是我希望避免的非生产性评论。这就是为什么我说“所以没有详细说明我为什么要写这门课”,因为这不重要。我需要一个自定义类,所以我创建它。我不是一个新手,我通过一个没有互联网的参考指南学习了C++。如果我需要使用Vector类,我会使用vector类。如果你发布了一些东西,只需发布一些有用的东西这就是我所说的。 – 2010-09-14 11:06:16