Как определить шаблонную функцию друга класса шаблона
У меня есть шаблон класса array_T
который является массивом общего назначения и функцией шаблона linear search TEMPLATE.h
и его объявили другом для класса arrayTemplate.h
чтобы можно было использовать функцию-член класса getArraySize()
и член класса данных a
который является массивом динамического размещения
arrayTemplate.h
#ifndef arrayTemplate
#define arrayTemplate
#include"linear search TEMPLATE.h"
#include<iostream>
using namespace std;
template <class T>
class array_T {
private:
T *a;
int arraySize;
public :
friend void linearSearch(array_T object);
array_T(int s) {
arraySize = s;
a = new T[arraySize];
for (int i= 0; i < arraySize; ++i) {
a[i] = 0;
}
}
~array_T() {
delete[]a;
}
void setArray() {
for (int i=0; i < arraySize; ++i) {
cout << "Enter the elements of the array " << endl;
cin >> a[i];
}
}
void getArray() {
for (int i=0; i < arraySize; ++i) {
cout << a[i] << endl;
}
}
int getArraySize() {
return arraySize;
}
};
#endif
линейный поиск TEMPLATE.h
#include"arrayTemplate.h"
#include<iostream>
using namespace std;
template <class T>
//void linearSearch(T desiredData, int arraySize, T *elemnts) {
void linearSearch(array_T<T> object , T desiredData) {
int arraySize = object.getArraySize();
int loc = -1;
int i = 0;
for (i = 0; i < arraySize; ++i) {
if (object.a[i] == desiredData) {
loc = i;
break;
}
}
if (loc > 0) {
cout << "the Item is found at position " << i + 1 << endl;
}
else {
cout << "the item is not found ";
}
}
main.cpp
#include"arrayTemplate.h"
#include"linear search TEMPLATE.h"
#include<iostream>
using namespace std;
int main() {
array_T<int> myArray(7);
myArray.setArray();
linearSearch(myArray,50)
return 0 ;
}
это ошибки, которые я получил
шаблон линейного поиска.h(8): ошибка C2065: "массив_Т": необъявленный идентификатор
шаблон линейного поиска.h(8): ошибка C2065: "объект": необъявленный идентификатор
шаблон линейного поиска.h (8): ошибка C2275: 'T': недопустимое использование этого типа в качестве выражения
линейный поиск template.h(6): примечание: см. объявление 'T'
шаблон линейного поиска.h(8): ошибка C2146: синтаксическая ошибка: отсутствует ")" перед идентификатором "requiredData"
main.cpp(14): ошибка C2660: 'linearSearch': функция не принимает 2 аргумента
========== Построение: 0 выполнено, 1 не выполнено, 0 обновлено, 0 пропущено ===========