Как присвоить значение и получить доступ к статической переменной класса, объявленной как указатель на целое, из функции 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;
и будет тоже работать.