【发布时间】:2019-02-13 21:43:47
【问题描述】:
我正在创建一个动态数组类,而且我是 C++ 新手。我在重载加法运算符以将字符串添加到对象时遇到问题。当我尝试添加字符串时,编译屏幕上没有显示任何内容。我还添加了我的复制构造函数、析构函数、重载的赋值运算符和重载的 ostream 运算符,以防万一这些都是问题。非常感谢您的帮助!!
DynamicStringArray::~DynamicStringArray()
{
delete[] dynamic_Array;
dynamic_Array = NULL;
}
DynamicStringArray::DynamicStringArray(const DynamicStringArray& first)
{
size = first.returns_Size();
dynamic_Array = new string[size];
for (int n = 0; n < size; n++)
{
dynamic_Array[n] = first.get_Entry(n);
}
}
void DynamicStringArray::operator =(const DynamicStringArray& first)
{
this->size = first.returns_Size();
this->dynamic_Array = new string[size];
for (int i = 0; i < this->size; i++)
{
this->dynamic_Array[i] = first.get_Entry(i);
}
}
ostream& operator <<(ostream& out, const DynamicStringArray& first) //nonmember requires 2 arguments
{
for (int i = 0; i < first.size; i++)
{
out << first.dynamic_Array[i] << endl;
}
return out;
}
void DynamicStringArray::add_Entry(string a)
{
string* Temp_Array = dynamic_Array; //old array
dynamic_Array = new string[size + 1]; //new array
for (int i= 0; i < size; i++) //copy old string values to temp array
{
dynamic_Array[i] = Temp_Array[i];
}
dynamic_Array[size] = a; //puts string a into last position of new array
delete[]Temp_Array; //free memory space
size++;
}
DynamicStringArray DynamicStringArray::operator +(const string& a)
{
DynamicStringArray added;
added.add_Entry(a);
return added;
}
int main()
{
DynamicStringArray fav_Foods;
fav_Foods.add_Entry("pasta");
fav_Foods.add_Entry("sushi");
fav_Foods + "Burgers";
cout << fav_Foods << endl;
}
【问题讨论】:
-
When I do try to add a string, nothing shows up on the compile screen.您希望在编译屏幕上显示什么? -
所以出现的是列表:意大利面和寿司。但我希望更新列表以显示意大利面、寿司和汉堡。
-
你是什么意思“编译屏幕上没有显示”?
operator+()没有可诊断的错误,因为它在语法上是正确的。您的问题将在于它做了什么(或不做什么),因为当您实现它时,z = x + y(其中x是DynamicStringArray和y是一个字符串)将给出不相关的结果到x- 我怀疑这不是你想要的。
标签: c++ arrays string pointers