还是类中static成员的问题
#include<iostream>
#include<string>
#include<cstring>
class Family* last; //可有可无?
class Family{
Family* ancestor;
static Family* last;
std::string name;
public:
Family(const std::string& nm)
{
ancestor=last;
last=this; //self-referential.
name=nm;
}
void display() const
{
std::cout<<name<<std::endl;
}
Family* Ancestor() const
{
return ancestor;
}
static Family*& Last()
{
return last;
}
};
Family* Family::last; //必须,但是为什么还要声明?
int main()
{
while(1){
std::cout<<"Enter a name ('end' when done): ";
char name[25];
std::cin>>name;
if(strncmp(name,"end",3)==0)
break;
//Make a list entry of the name.
Family* list=new Family(std::string(name));
}
while(Family::Last()!=0){
Family::Last()->display();
Family* hold=Family::Last();
Family::Last()=Family::Last()->Ancestor();
delete hold;
}
system("Pause");
return 0;
}
include下面的class Family* last;这句可有可无?
去掉后在VC6,DevC++中仍通过编译,
而去掉 Family* Family::last;这句VC6中编译通过,但是连接出错,而在DevC++中编译不能通过。
这句问什么一定要?