std::string
コンストラクターから取得したサイズのポインターの配列を初期化したい。また、2 つの配列に対して同じことを行いたいのですint
が、以下のコードはコンパイルされません。
class MyQuickInitArray
{
public:
MyQuickInitArray(int size)
{
if(size <= 0)
{
throw new std::exception;
}
_size = size;
_counter = 0;
A = new std::string[size];
B = new int[size];
C = new int[size];
}
std::string& operator[](int j) {
if(j > _size)
{
throw std::out_of_range("out of range");
}
if(((B[j]<0) || (B[j]>=_counter)) || (C[B[j]]!=j))
{
// A[j] points to junk
_counter++;
A[j] = new std::string;
B[j] = _counter-1;
C[_counter-1] = j;
return A[j];
}
// the cell was instantiated before
return A[j];
}
~MyQuickInitArray(){};
private:
std::string* A[];
int B[];
int C[];
int _size;
int _counter;
};
ctor から取得したサイズの配列を正しく宣言するにはどうすればよいですか?
編集:
発生するエラーは次のとおりです。
incompatible types in assignment of ‘std::string* {aka std::basic_string<char>*}’ to ‘std::string* [0]
int
配列の場合:
incompatible types in assignment of ‘int*’ to ‘int [0]’