我有以下代码,除了该行POINTEE* pointee[10];
是静态的之外,它确实可以工作,并且我想在创建类时使其动态化,因此它可以是任意大小。
#include <iostream>
class POINTEE
{
private:
int index;
public:
POINTEE(){}
POINTEE(int index)
{
this->index = index;
}
~POINTEE(){}
void print_index()
{
std::cout<<index<<std::endl;
}
};
void fill_element(POINTEE* &pointee, int index)
{
pointee = new POINTEE(index);
}
int main()
{
POINTEE* pointee[10];//I want to declare this within a class with a variable size instead of 10
for(int index = 0; index < 10; index++)
pointee[index] = NULL;
for(int index = 0; index < 10; index++)
{
POINTEE* temp_pointee;
fill_element(temp_pointee, index);
pointee[index] = temp_pointee;
}
for(int index = 0; index < 10; index++)
pointee[index]->print_index();
for(int index = 0; index < 10; index++)
delete pointee[index];
return 0;
}
我不想使用std::vector
主要是因为我正在尝试设计自己的数据容器。我也试过做
#include <iostream>
class POINTEE
{
private:
int index;
public:
POINTEE(){}
POINTEE(int index)
{
this->index = index;
}
~POINTEE(){}
void print_index()
{
std::cout<<index<<std::endl;
}
};
void fill_element(POINTEE* &pointee, int index)
{
pointee = new POINTEE(index);
}
int main()
{
POINTEE* pointee;// I changed this
pointee = new POINTEE[10];//and this and also deleted pointee below
for(int index = 0; index < 10; index++)
pointee[index] = NULL;
for(int index = 0; index < 10; index++)
{
POINTEE* temp_pointee;
fill_element(temp_pointee, index);
pointee[index] = temp_pointee;
}
for(int index = 0; index < 10; index++)
pointee[index]->print_index();
for(int index = 0; index < 10; index++)
delete pointee[index];
delete [] pointee;//I added this which maybe totally stupid!
return 0;
}
但这使其他错误出现:
C:\Documents and Settings\project5\array_of_pointers_ops\array_of_pointers_ops.cpp||In function 'int main()':|
C:\Documents and Settings\project5\array_of_pointers_ops\array_of_pointers_ops.cpp|38|error: invalid conversion from 'POINTEE*' to 'int'|
C:\Documents and Settings\project5\array_of_pointers_ops\array_of_pointers_ops.cpp|38|error: initializing argument 1 of 'POINTEE::POINTEE(int)'|
C:\Documents and Settings\project5\array_of_pointers_ops\array_of_pointers_ops.cpp|42|error: base operand of '->' has non-pointer type 'POINTEE'|
C:\Documents and Settings\project5\array_of_pointers_ops\array_of_pointers_ops.cpp|45|error: type 'class POINTEE' argument given to 'delete', expected pointer|
||=== Build finished: 4 errors, 0 warnings ===|