怎么解决error LNK2001,fatal error LNK1120?
错误信息:
--------------------Configuration: p118 - Win32 Debug--------------------
Compiling...
p118.cpp
Skipping... (no relevant changes detected)
Tri.cpp
Linking...
Tri.obj : error LNK2001: unresolved external symbol "private: static class std::vector<int,class std::allocator<int> > Triangular::_elems" (?_elems@Triangular@@0V?$vector@HV?$allocator@H@std@@@std@@A)
Debug/p118.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
p118.exe - 2 error(s), 0 warning(s)
Tri.h文件
//#include <iostream>
#include <vector>
using namespace std;
class Triangular
{
public:
static bool is_elem(int);
static void gen_elements(int length);
static void gen_elems_to_value(int value);
// static void display(int length,int beg_pos,ostream &os=cout);
private:
// static const int _max_elems=1024;
static vector<int> _elems;
};
Tri.cpp文件
#include "Tri.h"
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
static const int _max_elems=1024;
bool Triangular::is_elem(int value)
{
if(!_elems.size()||_elems[_elems.size()-1<value])
gen_elems_to_value(value);
vector<int>::iterator found_it;
vector<int>::iterator end_it=_elems.end();
found_it=find(_elems.begin(),end_it,value);
return found_it!=end_it;
}
void Triangular::gen_elements(int length)
{
if(length<0||length>_max_elems)
{
cerr<<"Oops! unable postion.\n";
return ;
}
if(_elems.size()<length)
{
int ix=_elems.size() ? _elems.size()+1 : 1;
for(;ix<=length;++ix)
_elems.push_back(ix*(ix+1)/2);
}
}
void Triangular::gen_elems_to_value(int value)
{
int ix=_elems.size();
if(!ix)
{
_elems.push_back(1);
ix=1;
}
while(_elems[ix-1]<value && ix<_max_elems)
{
//cout<<"elems to value:"<<ix*(ix+1)/2<<endl;
++ix;
_elems.push_back(ix*(ix+1)/2);
}
if(ix==_max_elems)
cerr<<"Triangular Sequence: Oops: value too large"
<<value<<"--exceeds max size of"
<<_max_elems<<endl;
}
main文件
#include "Tri.h"
#include <iostream>
using namespace std;
int main()
{
char ch;
bool more=true;
while(more)
{
cout<<"Please enter value:";
int ival;
cin>>ival;
bool is_elem=Triangular::is_elem(ival);
cout<<ival
<<(is_elem ? "is" : " is not")
<<"an element in the Triangular series.\n"
<<"Another value? (y/n)";
cin>>ch;
if(ch=='n'||ch=='N')
more=false;
}
system("pause");
return 0;
}