C++ Can';t在指针数组中赋值
我的问题是这一行的C++ Can';t在指针数组中赋值,c++,arrays,pointers,C++,Arrays,Pointers,我的问题是这一行的adaugare函数我认为persoane[numar\u persoane]=pers。因为那一行给了我这个错误。我有什么问题 我必须使用指针的动态数组 class baze { private: int numar_persoane=0; persoana (*persoane)=(persoana *)malloc(0); public: baze() { persoane = NULL;
adaugare
函数我认为persoane[numar\u persoane]=pers
。因为那一行给了我这个错误。我有什么问题
我必须使用指针的动态数组
class baze
{
private: int numar_persoane=0;
persoana (*persoane)=(persoana *)malloc(0);
public: baze()
{
persoane = NULL;
}
~baze()
{
delete[] persoane; //???????????
}
void adaugare(persoana pers)
{
numar_persoane++;
realloc(persoane, sizeof(persoana)*numar_persoane);
persoane[numar_persoane] = pers;
};
void afisarealfa()
{
for (int i = 0; i < numar_persoane; i++)
for (int j = i + 1; j < numar_persoane; j++)
if (persoane[i].gnume()>persoane[i].gnume())
{
persoana aux;
aux = persoane[i];
persoane[i] = persoane[j];
persoane[j] = aux;
}
for (int i = 0; i < numar_persoane; i++)
{
cout << "Nume:" << persoane[i].gnume() << endl;
cout << "Varsta" << persoane[i].gan() << endl;
cout << "sex" << persoane[i].gsex();
}
}
主要内容:
int-tmain(int-argc,_-TCHAR*argv[]
{
persoana a;
a、 san(1990年);
a、 斯努姆(“古”);
a、 ssex(“m”);
库特
正如@simpletron所指出的,malloc(0)有点奇怪。我甚至不确定它是否合法,但根据,它是合法的,尽管是实现定义的(它可能为NULL,它可能是一个有效的空区域;无论哪种方式,您都可以免费调用它,并且根据您可以跳过该malloc
不建议使用malloc但随后删除;根据,这是未定义的行为;您可能应该使用free to go with realloc而不是delete
您有一个off by one错误。您应该使用persoane[numar_persoane-1]=pers
您可能应该在构造函数中将年龄/性别设置为某个默认值
这可能是我个人的偏好,但我不喜欢复制类而不是指向类
您的persoana(*persoana*)malloc(0);
将其大小分配为0,这是胡说八道。您应该更改为persoana(*persoana*)=(persoana*)malloc(sizeof(persoana*);
如果您有N个对象,它们的编号从0到N-1;最后一个不在索引N处。
class persoana
{
private: string nume;
int an;
char sex;
public: void snume(string numebagat)
{
nume = numebagat;
}
string gnume()
{
return nume;
}
void san(int anbagat)
{
an = anbagat;
}
int gan()
{
return an;
}
void ssex(char sexbagat)
{
sex = sexbagat;
}
char gsex()
{
return sex;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
persoana a;
a.san(1990);
a.snume("Gogu");
a.ssex('m');
cout << "Nume: " << a.gnume() << endl << "Anul nasterii: " << a.gan() << endl << "Sex: " << a.gsex();
baze b;
b.adaugare(a);
return 0;
}