我正在寫一個程序,它需要一個表,我正在模擬使用矢量數組,我已經做了一個自定義類來創建表。但是我無法看到任何類表中的項目,除了vec_data。爲什麼我不能訪問這個班的公衆成員?出於某種原因,MSVC++智能感知只能看到vec_data,沒有別的。類不能訪問公共成員C++
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?)
'table(const T&,unsigned int size)'是一個構造函數,構造函數沒有命名,也不能直接調用。 (破壞者正式也未命名,但可以直接調用,你應該不應該有99.9%的時間。) –
但是這樣做:表 * tblOne = new表(123)throws:沒有合適的構造函數將int轉換爲表儘管,我有一個在構造函數 –
7c00h
中類型爲int的輔助參數,我寧願你不知道你在做什麼。'table(const T&)'是一個拷貝構造函數,'table(unsigned int)'是一個轉換構造函數。你有什麼是一個正常的,兩個參數的構造函數。要使用它,你需要傳遞_two_參數。一個'table'和一個'unsigned int'。 –