学习《essential c++》第四章的时候遇到了这样一个问题
这是Triangular_iterator.h
#pragma once
#include<iostream>
#include<string>
class Triangular_iterator
{
public:
Triangular_iterator(int index) :_index(index - 1) {}
bool operator== (const Triangular_iterator&) const;
bool operator!=(const Triangular_iterator&) const;
int operator*()const;
Triangular_iterator& operator++();
Triangular_iterator operator++(int);
//inline void check_integrity()const;
private:
inline void check_integrity()const;
int _index;
};
这是它的.cpp
#include "Triangular_iterator.h"
#include"Triangular.h"
inline bool Triangular_iterator::
operator==(const Triangular_iterator &rhs)const
{
return _index == rhs._index;
}
inline bool Triangular_iterator::
operator!=(const Triangular_iterator &rhs)const
{
return !(*this == rhs);
}
void Triangular_iterator::
check_integrity()const
{
//if (_index >= Triangular::_max_elems)
// throw iterator_overflow();
if (_index >= Triangular::_elems.size())
Triangular::gen_elements(_index + 1);
}
int Triangular_iterator::
operator*()const
{
check_integrity();
return Triangular::_elems[_index];
}
Triangular_iterator& Triangular_iterator::
operator++()
{
++_index;
check_integrity();
return *this;
}
Triangular_iterator Triangular_iterator::
operator++(int)
{
Triangular_iterator tmp = *this;
++_index;
check_integrity();
return tmp;
}
然后我在main()里面跑检验程序,如果我在Triangular_iterator.cpp中的加上incline就会报无法解析的外部符号,如果去掉就可以正常使用。请问这是为啥?书上都是加了inline的,我加了就报错。
这是我在main里面跑的代码
```c++
Triangular tri(20);
Triangular::iterator it = tri.begin();
Triangular::iterator end_it = tri.end();
cout << "Triangular Series of " << tri.length() << " elements\n";
/*cout << tri << endl;*/
while (it != end_it)
{
cout << *it << ' ';
++it;
}
cout << endl;
求解