对于我在函数加载中的作业,我实例化了一个 ifstream 对象,打开一个文件并开始读入,得到长编译器错误。我也尝试过通过重定向输入来摆脱 fstream 并使用 cin,但我从来没有走到那一步。完全相同的错误,除了使用 cin 而不是 in。
#ifndef _BUBBLE_SORT_H
#define _BUBBLE_SORT_H
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
template <typename T>
void swap(T *a, T *b){
T t = *a;
*a = *b;
*b = t;
}
template <typename T>
void bubbleSort(T * arr, int n){
bool isSorted = false;
for (int last = n-1; last > 0 && !isSorted; last--) {
isSorted = true;
for (int i = 0; i < last; i++)
if (arr[i] > arr[i+1]) {
swap((arr+i), (arr+i+1));
isSorted = false;
}
if (last % 1000 == 0) cerr << ".";
}
}
template <typename T>
void print(T arr[], int n){
for(int i = 0; i < n; i++)
cout << arr[i] << '\t';
}
template <typename T>
T &load(string filename, int &n){
ifstream in;
in.open(filename.c_str());
in >> n;
if(!in) {
cerr << "Error opening file" ;
exit(1);
}
T *arr = new T[n];
for(int i = 0; i < n; i++)
in >> *(arr + i);
in.close();
return *arr;
}
#endif
我正在使用 gnu gcc 编译器