私は、テーブルを作成するためにカスタムクラスを作成したベクトル配列を使用してエミュレートしているテーブルを必要とするプログラムを書いています。ただし、vec_data を除いて、クラス テーブルに項目が表示されません。このクラスのパブリック メンバーにアクセスできないのはなぜですか? 何らかの理由で、MSVC++ Intellisense は vec_data しか見ることができず、他には何も見えません。
template<class T>
class table
{
private:
T* vec_data;// initialize T
struct tblarray : public T
{
std::vector<T> vecTbl[];
bool operator[](unsigned int i) { return vecTbl[i]; } //redefine operator[] to accept unsigned int
static void operator new(double n) //redefine new operator
{
void *d;
if(n < 0) throw std::exception("Invalid Allocation to Negative number!");
if(assert((d=malloc(n)) != 0) = 0) throw std::bad_alloc;
return d;
}
void operator delete(void *d) //redefine delete operator
{
if(assert((free(p))) = 0) throw std::exception("Invalid Free of specified data!");
}
tblarray(const T&, unsigned int size) : T //one constructor
{
vecTbl = this.new std::vector<T>[reinterpret_cast<double>(size)];
}
~tblarray() //one destructor
{
this.delete(vecTbl);
}
}
public:
table(const T&, unsigned int size) : T
{
this.tblarray.tblarray(T, size);
}
~table()
{
this.tblarray.~tblarray();
}
}
例えば:
table<int> tblOne; //legal
table.table(int, 123); //not legal(probably not legal anyways, but intellisense says the function does not exist?)