私はある日、オブジェクト c の NSMutableArray と同様のストレージ機能を持つクラスを c++ で作成することにしました (ベクトルがこの種の 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;
}
それで、それはあります。どんな助けでも大歓迎です。