结构中的矢量指针无法转换主要中的矢量有什么问题?

vector pointer in struct can't convert vector in main what is wrong?

本文关键字:什么 问题 指针 结构 转换      更新时间:2023-10-16

试图让指针指向我的向量

main
struct mystruct
{
vector<string> *data;
};
int main()
{
vector<string> vec;
mystruct s;
s.data = vec;
}

通过这样做,我得到了"error: cannot convert std::vector<std::basic_string<char> > to std::vector<std::basic_string<char> > in initialization">

我做错了什么?

不能将非指针分配给指针变量(文字零除外)。您要做的是将指针的值设置为变量的地址。若要获取地址,可以使用 address-of 运算符:

s.data = &vec;

表达式的地址类型将是指向参数表达式类型的指针。

我做错了什么?

您已将非指针变量分配给指针变量。可以分配指针:

  • 另一个指针变量。
  • 变量的地址。
  • 0、空或空。

vec不属于上述情况。您需要改用&vec

考虑一下:

string s = "string"; 
string *p = &s;  // correct. a pointer is assigned an address.
//string *p = s; // wrong. assigned a non-pointer variable.
string *v = p; // correct. a pointer assigned to another pointer.