gpt4 book ai didi

c++ - 函数模板特化错误

转载 作者:行者123 更新时间:2023-11-28 06:17:40 24 4
gpt4 key购买 nike

我正在尝试针对 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) {

最佳答案

这可能是一个错字。

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

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 <>在函数声明之前。

关于c++ - 函数模板特化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29928891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com