如何在C ++中创建一个指向向量的静态指针。我试过了
// myfile.cpp
struct MyStruct
{
static int x;
static vector<int> *vec;
};
int MyStruct::x = 0;
vector<int> MyStruct::*vec = NULL;
int myfunc(vector<int> *nvec)
{
static MyStruct *ms = NULL;
if (ms == NULL)
{
ms->x = 7;
ms->vec = nvec;
}
return 0;
}
但我只是得到undefined reference to MyStruct::vec
MyStruct::x
工作得很好。矢量有什么用?
你需要使用:
vector<int>* MyStruct::vec = NULL;
对象类型是vector<int>*
。该对象属于MyStruct
的范围。
这条线
vector<int> MyStruct::*vec = NULL;
定义一个名为vec
的全局变量,它可以指向MyStruct
类型的vector<int>
的成员变量。
特定
MyStruct { vector<int> a; vector<int> b; };
你可以用
vec = &MyStruct::a;
要么
vec = &MyStruct::b;
如你所见,那是完全不同的。
这条线需要
vector<int> * MyStruct::vec = NULL;