Undefined symbols for architecture x86_64
Доброго времени суток. Пишу недавно, так что не судите строго.
У меня возникла проблема с программой.
Консоль сборки пишет:
Undefined symbols for architecture x86_64:
"A::Zn::n", referenced from:
A::Zn::set_n(unsigned int) in main.o
A::Zn::operator+(A::Zn) in main.o
header.h:
#ifndef HEADER_H
#define HEADER_H
namespace A
{
class Zn
{
static unsigned int n;
unsigned int v;
public:
Zn(unsigned int v0) : v (v0) {}
Zn operator + (Zn b)
{
Zn t(0);
t.v = (v + b.v) % t.n;
return t;
}
unsigned int get_v ()
{
return v;
}
static void set_n(unsigned int n0);
};
void Zn::set_n(unsigned int n0)
{
n = n0;
}
}
#endif // HEADER_H
main:
#include <iostream>
#include <header.h>
int main()
{
using namespace A;
Zn::set_n(6);
Zn a(5);
Zn b(5);
Zn c(5);
c=a+b;
std::cout << c.get_v() << '\n';
}
Сам компилятор выдаёт
ошибка: symbol(s) not found for architecture x86_64
Прям не знаю что делать. Заранее всем спасибо за ответ.
Источник: Stack Overflow на русском