Я получаю «Неразрешенные внешние символы» для следующего кода:Нерешенные внешние символы для оператора соиЬ перегружать
template <int n> class Fibo
{
private:
int pre, cur, next, tmp;
public:
Fibo() : pre(1), cur(1), next(2), tmp(0) {}
int get()
{
if(n == 0 || n == 1) return 1;
for(int i = 2; i < n; ++i)
{
next = pre + cur;
tmp = cur;
cur = next;
pre = tmp;
} return pre + cur;
}
friend ostream& operator<< (ostream& out, Fibo<n>& f);
};
template<int n>
ostream& operator<< (ostream& out, Fibo<n>& f)
{
out << f.get();
return out;
}
int main()
{
Fibo<5> a;
cout << a << endl;
cin.get();
}
Я получаю эту ошибку компиляции, когда я пытаюсь напечатать a
:
cout << a << endl;
, Когда я печатаю «normaly», то есть cout << a.get() << endl
, ошибок не было.
Я знаю, что ошибка Unresolved external symbols
связана с объявленной функцией, которая не была реализована. это случай в моем коде? Я не могу найти его.