2015-05-30 6 views
0

Я видел много ответов на этот вопрос, знаю, что искать и все еще может это видеть. Похож на какую-то очевидную проблему.Ожидаемое имя класса перед {токеном - очень просто

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: In file included from ../Algorithms/main.cpp:1:0: /home/user/Projects/Algorithms/bubble.h:6: error: expected class-name before '{' token class Bubble : public Algorithm{ ^

Почему компилятор не может видеть класс Алгоритм? Я включил его в Bubble.h, так?

ответ

2

Вы забыли указать аргумент шаблона для Algorithm. Если вы исправите это, ваш код будет скомпенсирован. (Live)

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 
+0

Хотя этот пост может ответить на вопрос, все же рекомендуется добавить некоторое объяснение и, возможно, некоторые ссылки на соответствующую документацию. Ответы с хорошими пояснениями и ссылками обычно более полезны как для текущего ОП, так и для будущих посетителей. Полные подробные ответы также более склонны привлекать позитивные голоса. –

+0

Да, вы правы. Как вы можете заметить из других моих ответов, я обычно это делаю :) У меня здесь была чрезвычайная ситуация, и я уже ввел код ... – jcoppens

Смежные вопросы