1

我有一个模板类array_T,它是一个通用数组和一个模板函数linear search TEMPLATE.h,它被声明为类的朋友,arrayTemplate.h 因此它可以使用类的成员函数getArraySize()和类的数据成员a,它是一个动态分配数组

数组模板.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 ";
    }

}

主文件

  #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 ; 
}

这些是我得到的错误

线性搜索 template.h(8):错误 C2065:'array_T':未声明的标识符

线性搜索 template.h(8):错误 C2065:“对象”:未声明的标识符

线性搜索 template.h(8): 错误 C2275: 'T': 非法使用这种类型作为表达式

线性搜索 template.h(6):注意:参见“T”的声明

线性搜索 template.h(8):错误 C2146:语法错误:标识符“desiredData”之前缺少“)”

main.cpp(14): 错误 C2660: 'linearSearch': 函数不接受 2 个参数

========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

4

0 回答 0