struct中的向量指针无法转换为main中的向量有什么问题?

时间:2017-05-18 13:50:08

标签: c++ c++11 pointers vector

尝试让指针指向主

中的向量
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

我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

s.data = &vec;

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

答案 1 :(得分:2)

  

我做错了什么?

您为指针变量分配了非指针变量。可以指定一个指针:

  • 另一个指针变量。
  • 变量的地址。
  • 0,NULL或nullptr。

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.