【求助;關於namespace】error LNK2019: unresolved external symbol

jackdubirthday 2013-01-21 08:13:42
小弟C++初學者,編了一個簡單的程序。由一個user-defined header file, 以及兩個cpp文件組成。其中頭文件里用了定義了namespace。 編譯后,出現如下錯誤:
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl SALES::showSales(struct SALES::Sales const &)" (?showSales@SALES@@YAXABUSales@1@@Z) referenced in function _main

後來我把三個文件中的和自定義namespace有關的部份都刪除掉。文件就可以正常運行了。希望哪位朋友可以指點一下,問題出在哪了?

附代碼:
//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);
}


//func.cpp

#include<iostream>
#include"sales.h"
using namespace SALES;
void setSales(Sales &s, const double ar[],int n)
{
if (n>=4)

for (int i=0;i<QUARTERS;i++)
{
s.sales[i]=ar[i];
}
else
{
int i;
for (i=0;i<n;i++)
{
s.sales[i]=ar[i];
}
for (;i<QUARTERS;i++)
{
s.sales[i]=0;
}
}

//get average
double total=0;
for (int i=0;i<QUARTERS;i++)
{
total=total+s.sales[i];
}
s.average=total/QUARTERS;

//get max
double max=0;
for (int i=0;i<QUARTERS;i++)
{
if (max<s.sales[i])
max=s.sales[i];
}
s.max=max;

//get min
double min=s.sales[0];
for (int i=1;i<QUARTERS;i++)
{
if (min>s.sales[i])
min=s.sales[i];
}
s.min=min;
}


void setSales(Sales &s)
{
using namespace std;
//store sales
for (int i=0;i<QUARTERS;i++)
{
cout<<"Enter the No."<<i+1<<"of sales: ";
cin>>s.sales[i];
}

//get average
double total=0;
for (int i=0;i<QUARTERS;i++)
{
total=total+s.sales[i];
}
s.average=total/QUARTERS;

//get max
double max=0;
for (int i=0;i<QUARTERS;i++)
{
if (max<s.sales[i])
max=s.sales[i];
}
s.max=max;

//get min
double min=s.sales[0];
for (int i=1;i<QUARTERS;i++)
{
if (min>s.sales[i])
min=s.sales[i];
}
s.min=min;
}


void showSales(const Sales &s)
{
using namespace std;
cout<<"The content of sales is: "<<s.sales[0]<<" "<<s.sales[1]<<" "<<s.sales[2]<<" "<<s.sales[3]<<endl;
cout<<"The average is: "<<s.average<<endl;
cout<<"The max is: "<<s.max<<endl;
cout<<"The min is: "<<s.min<<endl;
}


//main.cpp

#include<iostream>
#include"sales.h"
using namespace SALES;

int main()
{

using namespace std;
Sales a;

setSales(a);
showSales(a);

cin.get();
cin.get();
return 0;
}

...全文
131 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jackdubirthday 2013-01-21
引用 5 楼 lile1234_show 的回复:
引用 4 楼 jackdubirthday 的回复:引用 3 楼 lile1234_show 的回复:引用 2 楼 jackdubirthday 的回复:引用 1 楼 lile1234_show 的回复:C/C++ code?1234func.cppvoid SALES::showSales(const Sales &amp;amp;amp;amp;s){}voi……
謝啦。 大神!
  • 打赏
  • 举报
回复
lee_鹿游原 2013-01-21
引用 4 楼 jackdubirthday 的回复:
引用 3 楼 lile1234_show 的回复:引用 2 楼 jackdubirthday 的回复:引用 1 楼 lile1234_show 的回复:C/C++ code?1234func.cppvoid SALES::showSales(const Sales &amp;amp;amp;s){}void SALES::setSales(Sales &a……
因为你加了 using namespace SALES;是使用命名空间的意思。不是定义。
  • 打赏
  • 举报
回复
jackdubirthday 2013-01-21
引用 3 楼 lile1234_show 的回复:
引用 2 楼 jackdubirthday 的回复:引用 1 楼 lile1234_show 的回复:C/C++ code?1234func.cppvoid SALES::showSales(const Sales &amp;amp;s){}void SALES::setSales(Sales &amp;amp;s){}void SALES::setSal……
func.cpp和main.cpp的開頭,都有加上 using namespace SALES; 爲什麽func.cpp中,定義函數的時候需要加上SALES::,但是在main.cpp 里main函數里,調用函數的時候,卻不用加上SALES:: 呢??
  • 打赏
  • 举报
回复
lee_鹿游原 2013-01-21
引用 2 楼 jackdubirthday 的回复:
引用 1 楼 lile1234_show 的回复:C/C++ code?1234func.cppvoid SALES::showSales(const Sales &amp;s){}void SALES::setSales(Sales &amp;s){}void SALES::setSales(Sales &amp;s, const double ……
找不到函数实现,要不你就把函数扔里面,你想分开,那就要加上SALES
  • 打赏
  • 举报
回复
jackdubirthday 2013-01-21
引用 1 楼 lile1234_show 的回复:
C/C++ code?1234func.cppvoid SALES::showSales(const Sales &s){}void SALES::setSales(Sales &s){}void SALES::setSales(Sales &s, const double ar[],int n){}
非常感謝! 能解釋一下嗎?
  • 打赏
  • 举报
回复
lee_鹿游原 2013-01-21

func.cpp
void SALES::showSales(const Sales &s){}
void SALES::setSales(Sales &s){}
void SALES::setSales(Sales &s, const double ar[],int n){}
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2013-01-21 08:13
社区公告
暂无公告