有一天,我决定在 c++ 中创建一个类,其存储能力类似于目标 c 中的 NSMutableArray(我知道向量是这类事情的 goto 数据类型,但我还是自己做了)。所以我在 C++ 中创建了一个 mutableArray 类,到目前为止效果很好。我可以添加和删除对象,如果需要,可以将它们插入到特定的索引中,而无需指定数组的大小。
所以我的问题是:到目前为止,它只能存储 int 类型的对象。有什么办法可以让它保存其他数据类型,而不必为该特定类型创建一个全新的类?我对能够在同一个 mutableArray 中存储不同数据类型的对象不感兴趣,我只想能够指定我的 mutableArray 持有的数据类型。
我的头文件:
#define MUTABLEARRAY_H
class mutableArray
{
public:
mutableArray();
virtual ~mutableArray();
void initWithSize(int length);
void initWithArrayThroughIndeces(int nums[], int minimum, int maximum);
void addObject(int number);
void insertObjectAtIndex(int number, int index);
void changeSize(int length);
void removeLastObject();
void removeObjectAtIndex(int index);
int objectAtIndex(int index);
int lastObject();
int firstObject();
int countObjects();
protected:
private:
int *start;
int amount;
};
#endif // MUTABLEARRAY_H
我的 cpp 文件:
#include "mutableArray.h"
mutableArray::mutableArray()
{
//ctor
start = new int;
amount = 0;
}
mutableArray::~mutableArray()
{
//dtor
}
void mutableArray::initWithSize(int length){
amount = length;
}
void mutableArray::initWithArrayThroughIndeces(int nums[], int minimum, int maximum){
amount = maximum - minimum;
start = nums + minimum;
}
void mutableArray::addObject(int number){
amount++;
start[amount] = number;
}
void mutableArray::insertObjectAtIndex(int number, int index){
amount++;
int j = 0;
for (int *i = start + amount; i > start; i--){
if (j >= index){
start[j + 1] = *i;
}
j++;
}
start[index] = number;
}
void mutableArray::removeLastObject(){
amount--;
}
void mutableArray::removeObjectAtIndex(int index){
amount--;
int j = 0;
for (int *i = start; i < start + amount; i++){
if (j != index){
start[j] = *i;
j++;
}
}
}
int mutableArray::objectAtIndex(int index){
return start[index];
}
int mutableArray::lastObject(){
return start[amount];
}
int mutableArray::firstObject(){
return *start;
}
int mutableArray::countObjects(){
return amount;
}
就这样。任何帮助都感激不尽。