【发布时间】:2016-04-04 11:48:49
【问题描述】:
我正在尝试创建一个包含指向类的指针的数组。 数组的大小将由键盘给出,所以我尝试使用以下方式创建数组:
class creature
{
protected:
string crt_name ;
int L ;
public:
creature( int Life = -1 , string Name = "")
: L(Life) , crt_name(Name){}
string get_crt_name ( void )
{
return crt_name ;
}
};
class creature_society
{
private:
creature* *A ;
int noc ;
public:
creature_society( int , int ) ;
~creature_society() ;
creature** get_A ( void ){return A ;}
};
生物社会的构造器会用随机制造的生物填充数组
creature_society::creature_society( int life , int number_of_creatures )
{
noc = number_of_creatures ;
A = new creature*[noc] ;
creature* temporary ;
for( int i = 0 ; i<= number_of_creatures -1 ; i++)
{
if ( rand()%100 <= 50)
{
temporary = new good_creature( life , get_unique_name( 3 ) );
A[i] = temporary ;
}
else
{
temporary = new bad_creature( life , get_unique_name( 3 ) );
A[i] = temporary ;
}
}
}
然后我尝试打印数组
cout << endl << "Printing Society:" << endl ;
for ( j = 0 ; j <= N -1 ; j++)
{
temp = (*( cs1.get_A() + j ))->get_crt_name() ;
}
问题是,当我在 linux 上运行时遇到分段错误,而在 Dev C++ 上运行良好(大部分时间)! 您指出了哪些错误?
【问题讨论】:
-
你反对
std::vector<creature*>吗?它会让你的生活更轻松。 -
@CoryKramer:呃,为什么要存储原始指针??
-
@LightnessRacesinOrbit 好的,最好是
std::vector<std::unique_ptr<creature>>。婴儿步骤:) -
@CoryKramer:我们不要把超锋利的斧子给婴儿,嗯? :)
-
@LightnessRacesinOrbit 肯定原始指针是工具箱中最锋利的斧头吗?只用于最坚硬的树?
标签: c++ arrays class pointers segmentation-fault