【发布时间】:2018-09-24 17:59:28
【问题描述】:
问题是我有一个排序父类(排序器)和许多子类(合并、冒泡、快速)
我要做的是访问父类中的函数“runOnce”。
Main.cpp
int main()
{
fstream Data;
Data.open("Test.txt",ios::in|ios::out);
Sorter<int>* bubble = new BubbleSort<int>;
Sorter<int>* quick = new QuickSort<int> ;
Sorter<int>* merge = new MergeSort<int> ;
vector<int> list;
while(!Data.eof())
{
int temp;
Data >> temp;
list.push_back(temp);
}
Sorter<int>::runOnce(bubble, list);
Data.close();
}
Sorter.cpp
#ifndef SORTER_H
#define SORTER_H
#include <vector>
using namespace std;
template <class T>
class Sorter {
public:
Sorter(){};
virtual void sort(vector<T>&, int, int) = 0;
double runOnce(Sorter<T>&, vector<T>&);
};
#endif // SORTER_H
但我在 main 行中遇到错误
Sorter::runOnce(bubble, list);
上面写着:
没有匹配函数调用'sorter:: runOnce(Sorter*&, std:: vector > &)
我试着把它改成
bubble->Sorter->runOnce(bubble, list);
它说
Sorter的使用无效::Sorter
我该如何解决这个问题?
【问题讨论】:
-
如果要调用
runOnce(bubble, list);runOnce必须是静态函数
标签: c++ function inheritance