C++ 结构中的向量指针可以';t转换向量的主要问题是什么?

C++ 结构中的向量指针可以';t转换向量的主要问题是什么?,c++,c++11,pointers,vector,C++,C++11,Pointers,Vector,试图让指针指向main中的向量 struct mystruct { vector<string> *data; }; int main() { vector<string> vec; mystruct s; s.data = vec; } struct mystruct { 矢量*数据; }; int main() { 向量向量机; mystruct s; s、 数据=vec; } 通过这样做,我得到“错误:无法在初始化时将std::

试图让指针指向main中的向量

struct mystruct
{
    vector<string> *data;
};

int main()
{
    vector<string> vec;
    mystruct s;
    s.data = vec;
}
struct mystruct
{
矢量*数据;
};
int main()
{
向量向量机;
mystruct s;
s、 数据=vec;
}
通过这样做,我得到“
错误:无法在初始化时将std::vector转换为std::vector


我做错了什么?

您不能将非指针分配给指针变量(除了文字零)。您要做的是将指针的值设置为变量的地址。要获取地址,您可以使用操作员的地址:

s.data = &vec;

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

您不能将非指针分配给指针变量(文字零除外)。您要做的是将指针的值设置为变量的地址。要获取地址,您可以使用操作员的地址:

s.data = &vec;
表达式地址的类型将是指向参数表达式类型的指针

我做错了什么

将非指针变量指定给指针变量。可以指定一个指针:

  • 另一个指针变量
  • 变量的地址
  • 0,NULL或NULL ptr
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.
我做错了什么

将非指针变量指定给指针变量。可以指定一个指针:

  • 另一个指针变量
  • 变量的地址
  • 0,NULL或NULL ptr
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.

vec
不是指针。可能是错误复制了错误消息,或者是编译器坏了。它应该是这样说的;“无法从
vector
转换为
vector*
vec
不是指针。您可能复制了错误消息,或者编译器不正确。它应该是这样说的;“无法从
向量
转换为
向量*