“undefined reference to” 解决方法
今日写代码遇到问题,代码如下
#include <iostream>
#include <vector>
using namespace std;
class Animal{
public:
static int number;
Animal(){
cout<<"Animal"<<endl;
++number;
}
~Animal(){
--number;
}
};
class Dog:public Animal{
public:
Dog(){
cout<<"Dog"<<endl;
}
};
int main() {
int N;
cin>>N;
for(int i = 0; i < N;++i){
Animal A;
Dog D;
}
}
运行时报错,“undefined reference to” ,将static关键字去掉程序正常运行。
原因是实用static int number时未初始化,必须在类定义域外初始化,改进后代码如下
#include <iostream>
#include <vector>
using namespace std;
class Animal{
public:
static int number;
Animal(){
cout<<"Animal"<<endl;
++number;
}
~Animal(){
--number;
}
};
int Animal::number = 0;
class Dog:public Animal{
public:
Dog(){
cout<<"Dog"<<endl;
}
};
int main() {
int N;
cin>>N;
for(int i = 0; i < N;++i){
Animal A;
Dog D;
}
}