我在编写应该编写代码的方式时遇到困难.这是我的默认构造函数:
Address::Address() : m_city(NULL), m_street(NULL), m_buildingNumber(0), m_apartmentNumber(0)
{}
Run Code Online (Sandbox Code Playgroud)
......这是我的另一个构造函数:
Address::Address(const char* city, const char* street, const int buildingNumber,const int apartmentNumber) : m_city(NULL), m_street(NULL)
{
SetAddress(city,street,buildingNumber,apartmentNumber);
}
Run Code Online (Sandbox Code Playgroud)
我必须初始化我们的城市和街道字段,因为它们包含char *,我的setter使用remove来设置一个新的城市.我非常希望听到您对如何以正确的方式编写它而不重复代码的意见.这是我的SetAddress代码:
bool Address::SetAddress(const char* city, const char* street, const int buildingNumber, const int apartmentNumber)
{
if (SetCity(city) == false || SetStreet(street) == false || SetBuildingNumber(buildingNumber) == false || SetApartmentNumber(apartmentNumber) == false)
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
这是我的SetCity:
bool Address::SetCity(const char* city)
{
if(city == NULL)
return false;
delete[] m_city;
m_city = new char[strlen(city)+1];
strcpy(m_city, city);
return true;
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题,如果我更改char*到字符串我怎么能检查字符串城市是否不等于NULL,因为我知道字符串没有"=="运算符而字符串是一个对象,不能等于null,我怎么能检查我得到的字符串是否确实是legeal.
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |