如何创建动态的类对象
想通过输入,来确定创建对象的个数, 但不知道怎样动态的创建对象(红字描述的那部分),请大侠指教下有什么好的方法或思路吗??谢谢
int main()
{
int num;
cout<<"input the num of the player:\n";
cin>>num;
Player *pt=new Player[num+1];
*pt("name");
}
类对象如下:
class Player
{
private:
char *name;
int scores;
int num;
bool pass;
int array[6];
int tmpscores;
public:
Player(char *str="new player");//缺少 复制构造函数,赋值操作符的重载
~Player();
void Getscore();//容器处理
int TotalScore();
bool IsPass();
void GetPass();
};
[解决办法]
可以通过输入来new出你想要的对象个数。
[解决办法]
1 默认构造函数里要考虑数组的初始化 这是第一点
2 以接受输入来确定new的对象的个数 要确保输入的为数字 且为大于0的int 当然最好也有一个上限 要有出错处理
3 析构函数要干掉指针
[解决办法]
cin>>num;
Player *pt=new Player[num+1];
*pt("name");
你的这三句代码中是创建了一系列的对象,而你的第三句仅仅是把第一个对象赋值了,其他的都还是没有赋值。
你可以用一个循环来为每一个对象赋值:
cin>>num;
Player *pt=new Player[num+1]; //这个地方不用num+1的。(可能我不知道哦你还有什么其他的用途吧),楼上有位说的很好,构造函数中要先开辟数组的空间并初始化。
而且以后用字符串的时候最好用STL中的string类,很方便的。假设把你的char *name改成string name;
for(int idx = 0; idx < num; idx++)
{
cin>>name;
cin>>scores;
cin>>num;
cin>>pass;
for(int i = 0; i < 6; i++) //这个地方的数组长度6,最好用一个常量来定义(用C的宏定义也可以,为了以后的修改方便)
{
cin>>array[i];
}
cin>>tmpscores;
}