Я не могу получить правильный синтаксис для статических переменных и классов C ++.
Это упрощенный пример, показывающий мою проблему.
У меня есть одна функция, которая обновляет переменную, которая должна быть одинаковой для всех объектов,
тогда у меня есть другие функции, которые хотели бы использовать эту переменную.
В этом примере я просто возвращаю его.
#include <QDebug>
class Nisse
{
private:
//I would like to put it here:
//static int cnt;
public:
void print()
{
//And not here...!
static int cnt = 0;
cnt ++;
qDebug() << "cnt:" << cnt;
};
int howMany()
{
//So I can return it here.
//return cnt;
}
};
int main(int argc, char *argv[])
{
qDebug() << "Hello";
Nisse n1;
n1.print();
Nisse n2;
n2.print();
}
Текущая локальная статика в функции печати является локальной для этой функции,
но я бы хотел, чтобы это было «личное и глобальное в классе».
Такое ощущение, что мне не хватает некоторого базового: синтаксиса s ++ здесь.
/ Спасибо
Решение :
Мне не хватало
int Nisse::cnt = 0;
Итак, рабочий пример выглядит как
#include <QDebug>
class Nisse
{
private:
static int cnt;
public:
void print()
{
cnt ++;
qDebug() << "cnt:" << cnt;
};
int howMany()
{
return cnt;
}
};
int Nisse::cnt = 0;
int main(int argc, char *argv[])
{
qDebug() << "Hello";
Nisse n1;
n1.print();
Nisse n2;
n2.print();
qDebug() << n1.howMany();
}