问题是我有一个Sort父类(Sorter)和很多孩子(合并,泡泡,快速)
我要做的是访问父类中的函数“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
但我在主要的
中遇到错误Sorter :: runOnce(bubble,list);
它说:
没有匹配函数来调用'sorter :: runOnce(Sorter *&amp;,std :: vector&lt; int,std :: allocator&lt; int&gt;&gt;&amp;)
我试图将其改为
bubble->Sorter->runOnce(bubble, list);
它说
无效使用分拣机&lt; int&gt; :: Sorter
我该如何解决这个问题?
答案 0 :(得分:1)
该功能需要Sorter&
,而不是Sorter*&
。传入指针时取消引用指针,例如:
Sorter<int>::runOnce(*bubble, list);
答案 1 :(得分:0)
我解决了这个问题,让runOnce成为main中的一个函数并调用它,它解决了所有问题。我还使用了子类中父类的头文件,因为我使用的是cpp文件。