“undefined reference to” 解决方法

“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; 
    }
}

版权声明:本文为Drastorm原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。