class test
{
public:
static int i;
int func() {
return i;
}
};
int main()
{
test::i = 20;
}
не компилируется с clang: error: linker command failed with exit code 1 (use -v to see invocation)
.
Если я задаю переменную stati c inline
, я могу определить ее внутри main
. Или, если я не сделаю это встроенным, я могу определить его между объявлением класса и main()
следующим образом:
class test
{
public:
static int i;
int func() {
return i;
}
};
int test::i = 20;
int main()
{
}
Почему это работает, а первое - нет? Кроме того, зачем здесь нужен int
, когда он уже объявлен как int
внутри test
?