main.cpp
#include <iostream>
#include "SALES.h"
using namespace std;
int main() {
using namespace SALES;
struct Sales a,b;
double darr[4]={1.0,2.0,3.0,4.0};
SALES::setSales(a);
SALES::setSales(b,darr,3);
cout<<"a for:"<<endl;
SALES::showSales(a);
cout<<"b for:"<<endl;
SALES::showSales(b);
}
test.cpp
#include <iostream>
#include "SALES.h"
using namespace SALES;
using namespace std;
void setSales(Sales & s,const double arr[],int n)
{
if(n>4)
{
for(int i = 0;i<4;i++)
{
s.sales[i] = arr[i];
}
}else{
for(int i = 0;i<n;i++)
{
s.sales[i] = arr[i];
}
for(int i = n;i<4;i++)
{
s.sales[i] = 0;
}
}
double avr=0;
for(int i = 0;i<4;i++)
{
avr += s.sales[i];
}
s.average=(avr)/4;
double max = s.sales[0];
for(int i = 0;i<4;i++)
{
if(max<s.sales[i])
{
max = s.sales[i];
}
}
s.max = max;
double min = s.sales[0];
for(double sale : s.sales)
{
if(min>sale)
{
min = sale;
}
}
s.min = min;
}
void setSales(Sales & s)
{
cout << "请输入四季度的销售数据!"<<endl;
cout << "第一季度:";
cin >>s.sales[0];
cout << "第二季度:";
cin >>s.sales[1];
cout << "第三季度:";
cin >>s.sales[2];
cout << "第四季度:";
cin >>s.sales[3];
double avr=0;
for(int i = 0;i<4;i++)
{
avr += s.sales[i];
}
s.average=(avr)/4;
double max = s.sales[0];
for(int i = 0;i<4;i++)
{
if(max<s.sales[i])
{
max = s.sales[i];
}
}
s.max = max;
double min = s.sales[0];
for(int i = 0;i<4;i++)
{
if(min>s.sales[i])
{
min = s.sales[i];
}
}
s.min = min;
}
void showSales(const Sales & s)
{
cout<<"四季度的销售数据分别为:"<<endl;
cout<<"Season 1:"<<s.sales[0]<<endl;
cout<<"Season 2:"<<s.sales[1]<<endl;
cout<<"Season 3:"<<s.sales[2]<<endl;
cout<<"Season 4:"<<s.sales[3]<<endl;
cout<<"平均销售数据:"<<s.average<<endl;
cout<<"最低销售数据:"<<s.min<<endl;
cout<<"最好销售数据:"<<s.max<<endl;
}
头文件
#ifndef UNTITLED2_SALES_H
#define UNTITLED2_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[],int n);
void setSales(Sales & s);
void showSales(const Sales & s);
}
#endif //UNTITLED2_SALES_H
附上CMake
cmake_minimum_required(VERSION 3.19)
project(untitled2)
set(CMAKE_CXX_STANDARD 11)
add_executable(untitled2 main.cpp test.cpp SALES.h ttest.h)
build就提示
undefined reference to SALES::setSales(SALES::Sales&)' untitled2/main.cpp:10: undefined reference to
SALES::setSales(SALES::Sales&, double const*, int)'
untitled2/main.cpp:12: undefined reference to SALES::showSales(SALES::Sales const&)' untitled2/main.cpp:14: undefined reference to
SALES::showSales(SALES::Sales const&)'
我认为应该是cmake里的问题,但是不知道该如何解决
void setSales(Sales & s,const double arr[],int n)是不是要带上命名空间呢
void SALES::setSales(Sales & s,const double arr[],int n)