不能将函数 模板“void selectionSort(T [],int)”用作函数参数

来源:2-2 使用模板(泛型)编写算法

keyboard2steper

2017-01-17

	分别定义如下: 
	
	template<typename T>
	void SortTime( string sortName,void(*sort)(T[],int), T arr[],int n)
	{
		clock_t startTime = clock();
		sort(arr ,n);
		clock_t endTime = clock();

		assert( isSorted(arr , n));

		cout<<sortName << " :" <<double(endTime-startTime) /CLOCKS_PER_SEC <<" s" <<endl;

		return;                                                                                                                                                                                                            
	}
	-----------------------------------------------------------------------------------------------------
        template<typename T>
        void selectionSort(T arr[], int n){
        
            for(int i = 0 ; i < n ; i ++){
        
                int minIndex = i;
                for( int j = i + 1 ; j < n ; j ++ )
                    if( arr[j] < arr[minIndex] )
                        minIndex = j;
        
                swap( arr[i] , arr[minIndex] );
            }
        }
        
	调用如下:
	
	SortHelper::SortTime("Selection Sort", selectionSort,arr,n);


报错:

1>c:\algorithm\selectionsort\selectionsort\main.cpp(28): error C2896: “void SortHelper::SortTime(std::string,void (__cdecl *)(T [],int),T [],int)”: 不能将函数 模板“void selectionSort(T [],int)”用作函数参数

1>          c:\algorithm\selectionsort\selectionsort\main.cpp(8) : 参见“selectionSort”的声明

1>c:\algorithm\selectionsort\selectionsort\main.cpp(28): error C2784: “void SortHelper::SortTime(std::string,void (__cdecl *)(T [],int),T [],int)”: 未能从“重载函数类型”为“重载函数类型”推导 模板 参数

请问这个该如何解决 多谢 !

写回答

3回答

_T先生_

2017-01-17

图片加载失败
这里需要的是一个函数名而不是一个函数模板名,即显示实例化函数模板

4
3
weixin_慕慕249459
这里的selectionSort如果是类的成员函数的话,这里带也调用不通。
2021-08-24
共3条回复

liuyubobobo

2017-01-17

楼上正解。由于VS编译器不是标准的C++实现,所以一些地方会和课程代码有出入。建议加入课程官方群,群公告中对一些这类地方有提示 :-)

2
2
liuyubobobo
回复
奔跑的小女子
抱歉,之前只有一个群。刚刚在二群也添加了:)
2017-10-28
共2条回复

飞雷神面包

2017-01-24

非常感谢 遇到了同样的问题~~~~

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程