Как справиться с ошибкой связи C++
привет, ребята, ниже мой кусок кода ..он хорошо компилируется, но когда он достигает связывания кода, эта ошибка ирисов ;
hapter9exe42.о
chapter9exe42.o: в функции `main':
chapter9exe42.cpp:(.текст+0x4d): неопределенная ссылка на `Инт продаж::setarr&ЛТ;двойной&ГТ;(дважды*)'
chapter9exe42.cpp:(.text+0x6a): неопределенная ссылка на `void SALES::displayer<double>(double*, int)'
collect2: ошибка: ld вернул 1 статус выхода
пожалуйста, обратите внимание, что моя проблема заключается в связывании кода на терминале
вот заголовочный файл
#ifndef SANS2_H_INCLUDED #define SANS2_H_INCLUDED namespace SALES { const int quater = 4; struct sale { double sales[quater]; double average; double max; double min; }; void setsale(sale &,const double [],int n); template<class T> int setarr(T *); void displaysale(const sale & s); template<class T> void displayer(T *,int ); } double average(double*,int ); double max(double *,int ); double min(double *,int ); #endif // SANS2_H_INCLUDED
вот файл, содержащий определения функций
#include <iostream> #include "SANS2.h" double average(double * arr,int n) { double * sum= new double; for(int i=0;i<n;i++) *sum+=arr[i]; return (*sum)/n; } double max(double * arr,int n ) { double c; c = arr[0]; for(int i=1;i<n;i++) { (arr[i]>=c)?c=arr[i]:c=c; } return c; } double min(double *arr,int n ) { double c; c = arr[0]; for(int i=1;i<n;i++) { (arr[i]<=c)?c=arr[i]:c=c; } return c; } void SALES::setsale(SALES::sale & s,const double arr[],int n) { for(int i=0;i<n;i++) { s.sales[i]=arr[i]; } for(int i =n;i<SALES::quater;i++) { s.sales[i]=0; } s.average = average(s.sales,n); s.max = max(s.sales,n); s.min= min(s.sales,n); } template<class T> int SALES::setarr(T* s) { int i = 0; while(std::cin>>s[i]) i++; } void SALES:: displaysale(const SALES::sale & s) { std::cout<<"sales :"<<s.sales<<std::endl; std::cout<<"average sales :"<<s.average<<std::endl; std::cout<<"mininal sale :"<<s.min<<std::endl; std::cout<<"maximal sale :"<<s.max<<std::endl; } template<class T> void SALES::displayer(T *p,int n) { int i; for(i=0;i<n;i++) { std::cout<<"element "<<i+1<<p[i]<<std::endl; } }
а вот и главный файл
#include <iostream> #include "SANS2.h" static const int LEN = 100; int main() { SALES::sale po; double arr[LEN]; int number_of_elements; std::cout<<"hey man how are you man :"<<std::endl; number_of_elements = SALES::setarr(arr); SALES::displayer(arr,number_of_elements); return 0; }
Что я уже пробовал:
я искал в Интернете решение подобных проблем и те которые я нашел я применил его к своему коду но ничего не нашел changed..so я решаю взять его здесь.
спасибо за помощь..