我已经看到了这个问题的很多答案,知道要寻找什么,但仍然可以看到。看起来像是一个明显的问题。
Algorithm.h:
#ifndef ALGORITHM_H
#define ALGORITHM_H
#include <iostream>
using namespace std;
template <typename T>
class Algorithm
{
private:
T data;
T result;
public:
Algorithm(T in){
data = in;
}
void compute();
void displayData(){
cout<<data<<endl;
}
T getResult(){
return result;
}
};
#endif // ALGORITHM_H
Bubble.h:
#ifndef BUBBLE_H
#define BUBBLE_H
#include "algorithm.h"
class Bubble : public Algorithm{
public:
Bubble();
};
#endif // BUBBLE_H
的main.cpp
#include "bubble.h"
#include <iostream>
using namespace std;
int main()
{
Algorithm<int> a(1);
Algorithm<char> b('a');
a.displayData();
b.displayData();
return 0;
}
错误是:
/home/user/Projects/Algorithms/main.cpp:1:包含在的文件中 ../Algorithms/main.cpp:1:0:/home/user/Projects/Algorithms/bubble.h:6: 错误:&#39; {&#39;之前的预期类名token class Bubble:public 算法{ ^
为什么编译器看不到Algorithm类?我把它包含在Bubble.h中,所以?
答案 0 :(得分:2)
您忘记为Algorithm
提供模板参数。如果您解决了这个问题,您的代码编译得很好。 (Live)
答案 1 :(得分:1)
Bubble继承自Algorithm类,它是一个模板。所以它还需要模板规范:
#ifndef BUBBLE_H
#define BUBBLE_H
#include "algorithm.h"
template <typename T>
class Bubble : public Algorithm<T> {
public:
Bubble();
};
#endif // BUBBLE_H