Как создать статический указатель на вектор в C ++? - PullRequest
0 голосов
/ 18 февраля 2019

Как создать статический указатель на вектор в 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 работает отлично, хотя.Что случилось с вектором?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Строка должна быть

vector<int> * MyStruct::vec = NULL;
0 голосов
/ 18 февраля 2019

Вам необходимо использовать:

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;

Как видите, этосовсем другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...