我正在尝试运行一个使用字符串的动态数组,但是当我通过一个函数推送它时,我得到编译错误'dynamicArray': undeclared identifier
,'string':undeclared identifier
和illegal use of type 'void'
。由于某种原因,所有这些错误都指向标题。
我在这里调用指针:
string* dynamicArray = NULL;
我在这里调用函数:
populateArray(dynamicArray);
标题中包含的内容:
void populateArray(string *&dynamicArray);
功能:
void populateArray(string *&dynamicArray)
{
char decide;
bool moreStrings = true;
int counter = 0;
while (moreStrings == true)
{
counter ++;
dynamicArray = new string[counter];
cout << "\nEnter your string here:";
cin >> dynamicArray[counter - 1];
cout << "\nDo you want to enter another string? Y/N:";
cin >> decide;
decide = toupper(decide);
if (decide == 'N')
{
moreStrings = false;
}
}
}
PS:矢量可能更好,但我担心这不是一个选择。请仅提供处理指针的修复程序。
答案 0 :(得分:0)
您需要在头文件中加入<string>
。
答案 1 :(得分:0)
添加了#include <string>
和using namespace std;
,它对我来说很合适。
#include <string>
#include <iostream>
using namespace std;
void populateArray(string *&dynamicArray);
int main(){
string* dynamicArray = NULL;
populateArray(dynamicArray);
return 0;
}
void populateArray(string *&dynamicArray)
{
char decide;
bool moreStrings = true;
int counter = 0;
while (moreStrings == true)
{
counter ++;
dynamicArray = new string[counter];
cout << "\nEnter your string here:";
cin >> dynamicArray[counter - 1];
cout << "\nDo you want to enter another string? Y/N:";
cin >> decide;
decide = toupper(decide);
if (decide == 'N')
{
moreStrings = false;
}
}
}
答案 2 :(得分:0)
我看到一个比缺少的include和using子句更大的问题......
您写道:
dynamicArray = new string[counter];
但是每次都会为你分配一个新的记忆区域。它不会复制先前分配的元素。如果您不想使用std :: vector,则需要使用malloc作为第一个元素,而不是调用realloc将以前分配的数据复制到新元素中。
点击此表单了解详情:What is C++ version of realloc(), to allocate the new buffer and copy the contents from the old one?