2015-05-31 4 views
-1

У меня есть заголовочный файл с классом шаблона:шаблон метод класса в исходном файле

#ifndef BUBBLE_H 
#define BUBBLE_H 

#include "algorithm.h" 

template <typename T> 
class Bubble : public Algorithm <T> { 
public: 

    Bubble(T* in, int inSize) : Algorithm<T>(in, inSize){} 

    void compute(); 
}; 

#endif // BUBBLE_H 

если я надену все тело из вычислений() класса здесь все отлично работает. Но я хотел бы иметь его в файле cpp. Я писал:

#include "bubbleSort.h" using namespace std; 

template <typename T> 
void BubbleSort<T>::compute(){ //(*) 
    for (int i = 1; i<this->dataSize; i++){ 
     for (int j = this->dataSize-1; j>=i; j--){ 
      if(this->data[j] < this->data[j-1]) swap(this->data[j-1], this->data[j]); 
     } 
    } } 

Но я получил сообщение об ошибке в строке (*):

error: expected initializer before '<' token void BubbleSort::compute(){ ^

Как мне это исправить?

+1

См. Также http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file – juanchopanza

ответ

1

Это потому, что вы смешиваете Bubble и BubbleSort, возможно, также заголовки bubble.h и bubbleSort.h.

+0

О, черт возьми! Это так неудобно o.O Большое спасибо: D – Malvinka

+0

Это происходит со всеми в какой-то момент. –

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