namespace中定义变量和函数

//global_data.h
#ifndef _absorption
#define _absorption
#include <iostream>

class SpeciesRecord {
public:
	/** Default constructor. */
	SpeciesRecord()
	{
		std::cout << "creat a SpeciesRecord" << std::endl;
	}
};

#endif


//array.h
#ifndef _array
#define _array

#include <vector>
#include <iostream>
template<class base>
class Array : public std::vector<base>
{
public:
	// Constructors:
	Array() : std::vector<base>() 
	{
		std::cout << "creat a Array" << std::endl;
	}

};

#endif


//global_data.h
#ifndef _global_data
#define _global_data
#include "array.h"
#include "absorption.h"

class SpeciesRecord;

namespace global_data {
	extern  Array<SpeciesRecord> species_data;
	extern const double a;
	extern double b;
	const double c = 3;//const 定义时就要初始化
	extern double d;
}

#endif

//species_data.h
#ifndef _species_data
#define _species_data

//#include "array.h"
//#include "absorption.h"

void define_basic_species_data(void);

#endif
//species_data.cpp
#include "species_data.h"
#include "global_data.h"
#include <iostream>

namespace global_data {
  	Array<SpeciesRecord> species_data; //const 修饰容器后,不能增删出
	const double a = 1; //定义时要与声明相同(同时使用const或者都不用)
	double b = 2;
	double d = 4;
}

void define_basic_species_data(void)
{
	std::cout << "define_basic_species_data" << std::endl;
	using global_data::species_data;
	using global_data::a; 
	using global_data::b; 
	using global_data::c;
	using global_data::d;

	//double d = 4; //不能写在这里,应在相同namespace中
	species_data.push_back(SpeciesRecord());

	std::cout << "a=" << a << std::endl;
	std::cout << "b=" << b << std::endl;
	std::cout << "c=" << c << std::endl;
	std::cout << "d=" << d << std::endl;
}

//main.cpp
#include "global_data.h"
#include <iostream>
#include "species_data.h"

using namespace std;
int main(void)
{
	using global_data::species_data;
	define_basic_species_data();
	

	system("pause");
	return 0;
}



猜你喜欢

转载自blog.csdn.net/u014357799/article/details/79121999
今日推荐