Как присвоить значение и получить доступ к статической переменной класса, объявленной как указатель на целое, из функции main или другого класса?

Есть пример (упрощённый) кода:

#include <iostream>
using namespace std;

class Foo {
private:
    static int* intptr;
public:
    void static stuff(int* p) {
        intptr = &(*p);
        //cout << *intptr << endl;
    }
};

int main() {
    int a = 33;
    Foo::stuff(&a);
}

При компиляции вылезает ошибка undefined reference to `Foo::intptr'. Подскажите, пожалуйста, решение проблемы.


Ответы (1 шт):

Автор решения: KoVadim

Для статических переменных класса нужно подсказать компилятору, где сохранить все это. Самый простой способ - прямо над main написать вот такое

int* Foo::intptr = nullptr; // или чем там инициализировать.

Если стандарт (с++17) и компилятор позволяют, то можно просто вот так написать

    static inline int* intptr;

и будет тоже работать.

→ Ссылка