我有一个字符串指针数组:
string *names = new string[numOfNames];
然后使用文件中的值填充该数组。我试图按字母顺序对名称进行排序,所以我试图将另一个指针数组分配给每个单独的元素名称指向的地址。所以我想做这样的事情:
string *namesPtr = new string[numOfNames];
namesPtr[0] = &names[0];
然而,我在等号上得到了一个红色波浪形的说法
没有运算符“=”匹配这些操作数,操作数类型是std :: string = std :: string *
我有一个名称的指针数组,因为将在我要打开的文件中指定numOfNames,根据我的理解,常规数组将无法工作,因为我必须指定数组中的元素数。
答案 0 :(得分:0)
当然存在类型不匹配。
namesPtr[0]
的类型为string
&names[0]
的类型为string*
。
您需要的是:
string** namesPtr = new string*[numOfNames];
namesPtr[0] = &names[0];
要完成指针分配,您需要:
for (int i = 0; i < numNames; ++i )
{
namesPtr[i] = &names[i];
}
答案 1 :(得分:0)
namesPtr[0] = &names[0];
这是不正确的。 &安培;将在名称中生成解除引用字符串的地址,因此您将一个地址分配给非法的字符串。