如何在C ++中创建一个指向向量的静态指针?

问题描述 投票:1回答:2

如何在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工作得很好。矢量有什么用?

c++ static
2个回答
3
投票

你需要使用:

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;

如你所见,那是完全不同的。


2
投票

这条线需要

vector<int> * MyStruct::vec = NULL;
© www.soinside.com 2019 - 2024. All rights reserved.