Неразрешенный внешний символ для статических членов класса
Объявления статических элементов class данных в объявлении класса cxx не являются их определением.
Чтобы members определить их, вы должны classes сделать это в файле .CPP
, чтобы cpp избежать дублирования символов.
Единственные c++ данные, которые вы можете class объявлять и определять, - это cpp интегральные статические members константы.
(Значения enums
также static-vs-non-static могут использоваться как classes постоянные значения)
Возможно, вы members захотите переписать свой static-vs-non-static код как:
class test {
public:
const static unsigned char X = 1;
const static unsigned char Y = 2;
...
test();
};
test::test() {
}
Если вы хотите иметь members возможность изменять свои static статические переменные (другими static словами, когда неуместно cpp объявлять их как const), вы static можете разделить свой код members между .H
и .CPP
следующим образом:
.H:
class test {
public:
static unsigned char X;
static unsigned char Y;
...
test();
};
.CPP:
unsigned char test::X = 1;
unsigned char test::Y = 2;
test::test()
{
// constructor is empty.
// We don't initialize static data member here,
// because static data initialization will happen on every constructor call.
}
c++
class
static
members
Неразрешенный внешний символ для статических членов класса
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.