Student.h
class Student
{
private:
char m_sHouse[64];
public:
Student(void);
~Student(void);
void getHouse(char *hName);
void setHouse(char *hName);
}
Student.cpp
void Student::setHouse(char *hName)
{
strcpy(m_sHouse, hName);
}
void Student::getHouse(char *hName)
{
if (m_sHouse != NULL)
{
hName = new char[strlen(m_sHouse)+1];
strcpy(hName, m_sHouse);
}
}
在主函数中:
student.getHouse(house);
if (strcmp(house, "house") == 0)
cout <<"\tCorrectly returned the student house: " << house<< endl;
setHouse(char *hName)
函数将student->m_sHouse
设为“house”。
我的问题:
当在getHouse(char *hName)
函数内部时,它表现得像它应该的那样,将hName
设为“house”。但是当控制权传递出函数时,我的动态分配的内存被释放了,所以当我在主函数中进行strcmp比较时,我的程序崩溃了(我最终比较了一个NULL指针)。
strcpy
通常是不被赞同的,因为你会混合不同的风格。你尝试过使用std:string
吗? - Alexander Kondratskiy