关于网友提出的“ C++名称空间问题”问题疑问,本网通过在网上对“ C++名称空间问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: C++名称空间问题
解决方案10: .cpp 中,名空间内定义的函数,类的成员函数,外部变量,类的静态变量定义
也都要放在 名空间内部
名空间 一个最突出的特点是,和定义的文件无关
同一名字的名空间,
1)在同一头文件,实现文件中,可以有多处,定义不同的内容
他们都是同一 名空间。
2)同一名字的名空间 ,可以在多个 头文件,实现文件中,定义不同的内容
----------------------------------
相同内容可能,会有重复定义问题,
这个问题需要细细讨论,不是一句话的问题
-----------------------------------
举例:
标准库 的 std 名空间,是在不同头文件内定义的。
解决方案11:#ifndef SALES_H
#define SALES_H
namespace SALES
{
const int QUARTERS=4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &s,const double ar[],int n);
void setSales(Sales &s);
void showSales(const Sales &s);
};
}
#endif
//sales.cpp
namespace SALES {
#include
#include "student.h"//在这儿声明using namespace SALES;会出错
using std::cout;
using std::endl;
void Sales::setSales(Sales &s,const double ar[],int n)
{
int i;
double sum=0;
s.max=ar[0];s.min=ar[0];
for(i=0;i<>
{
s.sales[i]=ar[i];
sum+=ar[i];
if(s.max<>
s.max=ar[i];
if(s.min>ar[i])
s.min=ar[i];
}
s.average=sum/i;
}
void Sales::setSales(Sales &s)
{
cout<<"Enter "<<>
double ar[QUARTERS];
double sum=0;
int i;
for(i=0;i<>
{
std::cin>>ar[i];
s.sales[i]=ar[i];
sum+=ar[i];
}
s.average=sum/i;
s.max=s.min=ar[0];
for(i=0;i<>
{
if(s.max<>
s.max=ar[i];
if(s.min>ar[i])
s.min=ar[i];
}
}
void Sales::showSales(const Sales &s)
{
for(int i=0;i<>
{
cout<<"Sales: "<<><>
}
cout<<"Average: "<<><>
cout<<"Max: "<<><>
cout<<"Min: "<<><>
}
}
//main.cpp
#include "student.h"
#include
using namespace SALES;
int main()
{
Sales s1,s2;
double ar[QUARTERS]={1.1,2.2,3.3,4.4};
setSales(s1,ar,QUARTERS);
showSales(s1);
setSales(s2);
showSales(s2);
return 0;
}
以上介绍了“ C++名称空间问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3761894_2.html