首页 文章

从int *转换为int&

提问于
浏览
0

我一直在尝试编译并使用&符号,但仍然无法弄清楚错误是什么 . 有任何想法吗?

qsort.cc:22:23: error: no matching function for call to ‘qsort<int>::quicksort(std::vector<int, std::allocator<int> >*)’
qsort.cc:22:23: note: candidate is:

qsort.h:16:6: note: void qsort<T>::quicksort(std::vector<T>&) [with T = int]
qsort.h:16:6: note:   no known conversion for argument 1 from ‘std::vector<int, std::allocator<int> >*’ to ‘std::vector<int, std::allocator<int> >&’

Headers :

template <class T>
class qsort
{
public:

void quicksort(vector<T> &v);
void qusort(vector<T> &v, int left, int right);
void print(vector<T> &v);
};

template <class T>
void qsort<T>::quicksort(vector<T> &v)
{
qusort(&v, 0, 0);
}

template <class T>
void qsort<T>::print(vector<T> &v)
{
    for(int i = 0; i < v.size(); i++)
    {
    cout << v[i] << endl;
    }
}

主要:

int main()
{
qsort<int> asort;
vector<int> v;

v.push_back(2);
v.push_back(1);
v.push_back(7);
v.push_back(3);
v.push_back(8);
v.push_back(4);
v.push_back(0);
v.push_back(9);
v.push_back(5);
v.push_back(6);

asort.quicksort(&v);
asort.print(&v);

return 0;
}

在&符号中删除主函数调用后的更新错误(简短版本)

qsort.h:在成员函数'void quisort :: qusort(std :: vector&,int,int)[with T = int]':qsort.h:18:5:从'void quisort :: quicksort实例化(std: :vector&)[with T = int]'

qsort.cc:22:22:从这里实例化qsort.h:27:38:错误:从'int'无效转换为'const char *'[-fpermissive] / usr / include / c /4.6/bits/basic_string . tcc:214:5:错误:初始化'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [_CharT = char,_Traits = std :: char_traits,_Alloc = std :: allocator]'[-fpermissive]

qsort.h:18:5:从'void quisort :: quicksort(std :: vector&)[with T = int]'qsort.cc:22:22实例化:从这里实例化qsort.h:31:9:错误: '(&v) - > std :: vector <_Tp,_Alloc> :: operator []中没有匹配'operator <'[_Tp = int,_Alloc = std :: allocator,std :: vector <_Tp,_Alloc > :: reference = int&,std :: vector <_Tp,_Alloc> :: size_type = long unsigned int]((long unsigned int)i))<pivot'qsort.h:31:9:注意:候选者是: / usr / include / c /4.6/bits/stl_pair.h:207:5:注意:模板bool std :: operator <(const std :: pair <_T1,_T2>&,const std :: pair <_T1,_T2 >&)/ usr / include / c /4.6/bits/stl_iterator.h:291:5:注意:模板bool std :: operator <(const std :: reverse_iterator <_Iterator>&,const std :: reverse_iterator <_Iterator> &)

1 回答

  • 1

    您的成员函数通过引用获取参数 . 它们不接受指针(地址运算符 & 返回的指针) . 您只需要传递对象,引用将绑定:

    asort.quicksort(v);
    asort.print(v);
    

相关问题