2015-04-28 114 views
0

我想專注我的函數模板列表的int指針。功能模板專業化錯誤

template <typename typ> 
void sortowanie(typ *tablica, int rozmiar, Komparator<typ> *komparator) 
{ 
    int p; 
    for(int j = rozmiar - 1; j > 0; j--) 
    { 
     p = 1; 
     for(int i = 0; i < j; i++) 
      if(komparator->porownaj(tablica[i], tablica[i + 1])) 
      { 
       typ pom = tablica[i]; 
       tablica[i] = tablica[i + 1]; 
       tablica[i + 1] = pom; 
       p = 0; 
      } 
     if(p) break; 
    } 
}; 

template<> 
void sortowanie<int *>(int **tablica, int rozmiar, Komparator<int> *komparator) 
{ 
    int p; 
    for(int j = rozmiar - 1; j > 0; j--) 
    { 
     p = 1; 
     for(int i = 0; i < j; i++) 
      if(komparator->porownaj(*tablica[i], *tablica[i + 1])) 
      { 
       int *pom = tablica[i]; 
       tablica[i] = tablica[i + 1]; 
       tablica[i + 1] = pom; 
       p = 0; 
      } 
     if(p) break; 
    } 
}; 

,但我得到了以下錯誤:

obliczenia.cpp:43:10: error: template-id ‘sortowanie<int*>’ for ‘void obliczenia::sortowanie(int**, int, Komparator<int>*)’ does not match any template declaration 
void sortowanie<int*>(int* * tablica, int rozmiar, Komparator<int> *komparator) { 
      ^
obliczenia.cpp:43:10: error: template-id ‘sortowanie<int*>’ for ‘void obliczenia::sortowanie(int**, int, Komparator<int>*)’ does not match any template declaration 
void sortowanie<int*>(int* * tablica, int rozmiar, Komparator<int> *komparator) { 
+0

剛剛過載 - 不擅長(忽略'模板<>'在第二功能) –

+0

如果我想使用 無效sortowanie(INT * tablica,INT rozmiar,Komparator * komparator) C++返回 'obliczenia :: sortowanie的多個定義(INT **,INT,Komparator *)」 –

回答

1

也許這是一個錯字。

在通用模板的版本,您有:

template <typename typ> 
void sortowanie(typ *tablica, int rozmiar, Komparator<typ> *komparator) { 

在專業化,您有:

template<> 
void sortowanie<int*>(int* * tablica, int rozmiar, Komparator<int> *komparator) { 
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

我懷疑你的意思是是:Komparator<int*> *komparator

沒有這個,函數可能是一個重載,但它不能是一個模板專門化。在這種情況下,您需要在函數聲明之前刪除template <>

+0

我解決它,但還是'code'('無效obliczenia :: sortowanie (INT的多個定義**, int,Komparator *)) –

+0

@PawełSzymański,我想不出還能做些什麼。如果可以,請發佈[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

它適用於我在模板<>之後寫入「內聯」,但我不知道爲什麼 –