C++ 结构中的向量指针可以';t转换向量的主要问题是什么?
试图让指针指向main中的向量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::
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
不是指针。您可能复制了错误消息,或者编译器不正确。它应该是这样说的;“无法从向量
转换为向量*
”